javascript - 动画文件输入 Javascript
问题描述
当用户在 InputFile 中选择一个文件时,我正在尝试创建一个动画。但它只在我重新加载页面时运行。所以我不知道如何解决这个问题。这是我的代码。
Html Erb(导轨):
<div class="box" id="Box">
<%= f.label 'Upload Your Song !', class:'label1', for:'fileUpload' %>
<%= f.label 'Size: 15mb max', class:'label2', for:'fileUpload' %>
<%= f.file_field :video, id:'fileUpload', style:'opacity:0;position:absolute;' %>
<%= f.label 'Choose your file', for:'fileUpload', class:'btn-hover color-1 flex' %>
</div>
脚本 Javascript:
<script>
var Browse = document.getElementById("fileUpload")
var File = document.getElementById("Box");
var Upload = document.getElementById("Uploader");
if( Browse.files.length != 0 ){
File.animate([
{ transform: 'translateY(0px)' },
{ transform: 'translateY(-150px)' }
], {
duration: 1000,
});
window.setTimeout( function() {
File.className += ' fade-in';
}, 50);
window.setTimeout( function() {
File.style.display = 'none';
}, 1050);
}
</script>
CSS:
.fade-in {
opacity: 0;
transition: opacity 1s;
-moz-transition: opacity 1s;
-ms-transition: opacity 1s;
-o-transition: opacity 1s;
-webkit-transition: opacity 1s;
}
解决方案
我怀疑当输入改变时你会想要运行这个。也许使用onChange
事件:
var browseInput = document.getElementById("fileUpload")
browseInput.onchange = function() {
var fileBox = document.getElementById("Box");
if( browseInput.files.length != 0 ){
fileBox.animate([
{ transform: 'translateY(0px)' },
{ transform: 'translateY(-150px)' }
], {
duration: 1000,
});
window.setTimeout( function() {
fileBox.className += ' fade-in';
}, 50);
window.setTimeout( function() {
fileBox.style.display = 'none';
}, 1050);
}
}
推荐阅读
- pandas - 使用带有身份验证的 Pandas 读取 Gsheet
- python - 如何使用 Python 在 GoogleSheet 中附加数据
- python - 如何根据两个不同列的日期获取交叉连接表的唯一记录?
- batik - 使用蜡染将 SVG 转换为 JPG 时出现异常
- indicator - 如何将指标从 ThreatConnect 推送到 QRadar?
- laravel-8 - 命名空间路由 laravel 8 中的变量使用不起作用
- firebase - 电子邮件用户验证后注销的 Flutter/Firebase 问题
- ffmpeg - 强制 FFmpeg 仅输出 TCP 作为 RTSP 代理
- delphi-7 - 如何在delphi 7中为事件设置过程(函数)?
- c# - 如何让多个用户并行访问该方法