【问题标题】:How to make HTML5 video fade in when it has finished loading?加载完成后如何使 HTML5 视频淡入?
【发布时间】:2016-03-02 01:35:02
【问题描述】:

我试图让我的 HTML5 视频元素在加载时淡入,(我目前正在使用 Javascript canplaythrough 显示它,正如您在下面看到的代码中看到的那样,但这有点苛刻。)如何让 HTML5 视频元素轻轻淡入?我可以使用 JavaScript 或 jquery,但我不太了解其中一个,所以一些完整的代码会很有帮助!

这里是代码:(如果你用运行代码片段运行代码,它不能很好地工作,所以我强烈建议去我的网站,它是我的视频页面,如果你等待 30秒/分钟(直到视频加载):jeffarries.com/videos

<script>
var e = document.getElementById("myVideo");
e.style.display = 'none'

var vid = document.getElementById("myVideo");
vid.oncanplaythrough = function() {
    var e = document.getElementById("myVideo");
       e.style.display = 'block'
};

</script> 
<video style="display: block;" id="myVideo" width="320" height="176" controls>
  <source src="http://www.jeffarries.com/videos/jeff_arries_productions_intro.mp4" type="video/mp4">
  Your browser does not support HTML5 video.
</video>

感谢您的时间和精力!

【问题讨论】:

  • 你试过$("#myVideo").fadeIn()
  • 我用$("#myVideo").fadeIn() 替换了var e = document.getElementById("myVideo"); e.style.display = 'block',但它似乎不起作用。
  • 应该可以正常工作 -> jsfiddle.net/m6ryk47L
  • 我完全按照您的要求做了。但是,如果您访问我的视频页面,它就无法正常工作!
  • 你必须包含 jQuery `

标签: javascript jquery css html video


【解决方案1】:

以下是使用 javascript 淡入视频的方法

var e = document.getElementById("myVideo");
e.style.opacity = 0;

var vid = document.getElementById("myVideo");
vid.oncanplaythrough = function() {
    setTimeout(function() {
        var e = document.getElementById('myVideo');
        fade(e);
    }, 5000);
};

function fade(element) {
    var op = 0;
    var timer = setInterval(function() {
        if (op >= 1) clearInterval(timer);
        element.style.opacity = op;
        element.style.filter = 'alpha(opacity=' + op * 100 + ")";
        op += op * 0.1 || 0.1;
    }, 50);
}

FIDDLE

【讨论】:

  • 我假设我在 JavaScript 末尾编辑 50 以更改淡入淡出的时间?
  • 是的,这将是间隔的时间,减少它以获得更快的动画
  • 我一直在搞乱它,我得出的结论是,我需要它在视频完全加载完成时出现,而不仅仅是 canplaythrough,因为那是不可靠的(视频一直显示,然后我播放它,它卡在中间),有没有办法做到这一点?
  • 有很多不同的events,但canplaythrough 通常是您想知道视频何时可以播放的那个,但它会做出一些假设,例如猜测其余的可以根据当前的下载速率等加载视频。我唯一能想到的另一件事是检查视频readyState,例如 -> jsfiddle.net/m6ryk47L/3
  • 感谢准备好的状态码!尝试使用它的结果也参差不齐,我想我更喜欢canplaythrough。您是否愿意在代码中添加一个计时器,以便在收到canplaythrough 后等待 5 秒然后执行?我现在的 JavaScript 不太好,对不起!
猜你喜欢
  • 2016-06-13
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 2011-07-05
  • 2014-06-12
  • 2014-09-01
  • 1970-01-01
相关资源
最近更新 更多