当点击提交时,它会重定向到另一个路由/网址。但是加载下一页需要一点时间,因为当我点击提交按钮时,在后台,它运行很少的机器学习模型。
现在,在此加载和处理期间,我想显示一个页面加载 GIF。在页面加载的显示过程中,我希望我的表单淡出并且只在页面中间显示 GIF。
我尝试了不同的方法来做到这一点,但似乎效果不佳。
表单提交代码:
<form class="form-signin" id="myform" action="data" method="post" enctype="multipart/form-data">
<p class="form-signin-heading">upload input sample in csv format to run the model inference</p>
<input class="form-control-file" type="file" name="upload-file" value="">
<input class="form-control-file" type="submit" name="" value="Submit">
</form>
有什么帮助吗?
答案 0 :(得分:2)
这可能是一个起点。单击提交按钮时,表单将完全淡出,并出现微调器。后端处理完毕后,重定向将加载新页面。
const form = document.getElementById('myform');
const spinner = document.getElementById('spinner');
form.addEventListener('submit', (e) => {
e.preventDefault();
form.classList.toggle('fade-out');
spinner.classList.toggle('show');
});
form{
text-align: center;
transition: opacity 0.6s ease-out;
}
img{
display: none;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.show{
display: block;
}
.fade-out{
opacity: 0;
}
<form class="form-signin" id="myform" action="data" method="post" enctype="multipart/form-data">
<p class="form-signin-heading">upload input sample in csv format to run the model inference</p>
<input class="form-control-file" type="file" name="upload-file" value="">
<input class="form-control-file" type="submit" name="" value="Submit">
</form>
<img src="https://www.dariusland.com/images/load.gif" id="spinner" class="hide">
注意:在js中,我添加了e.preventDefault()
来展示demo,但你显然不需要它。
答案 1 :(得分:1)
这应该有效
加载器会在你的页面加载时显示,准备好后会消失
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
<title>Page Title</title>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link rel='stylesheet' type='text/css' media='screen' href='main.css'>
<script src='main.js'></script>
</head>
<body onload="load()">
<!--Place your code here-->
<div class="loader">
<!--Change the "src" to your preferred loading GIF-->
<img src="https://media.giphy.com/media/xTk9ZvMnbIiIew7IpW/giphy.gif" alt="">
</div>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.loader {
display: block;
position: fixed;
width: 100vw;
height: 100vh;
background-color: rgb(36, 36, 36);
z-index: 9999;
justify-content: space-around;
align-items: center;
display: flex;
}
.loader h1 {
font-size: 4rem;
color: #fff;
-webkit-animation: loader-anim 3s ease-in-out infinite alternate;
-moz-animation: loader-anim 3s ease-in-out infinite alternate;
animation: loader-anim 3s ease-in-out infinite alternate;
}
@keyframes loader-anim {
30% {
transform: translateY(-3vh);
}
100% {
transform: translateY(0);
}
}
</style>
<script>
var loader = document.querySelector('.loader');
//The value after the function is a 500ms delay before closing the loader
function load() {
setTimeout(function(){loader.style.display = "none"}, 500);
}
</script>
</body>
</html>