H5序列图实现视频播放效果

H5序列图实现视频播放效果

场景:公司业务需求在H5网页背景播放视频,但是手机上会出现各种奇葩问题,一个个解决过于麻烦于是我直接简单粗暴的使用序列图拼接成类似视频的效果话不多说,先上代码:

var urlRoot = './images/thumbs(';
var indexRange = [ 1, 475 ];
var maxLength = indexRange[ 1 ] - indexRange[ 0 ] + 1;
var eleContainer = document.getElementById( 'container' );
//存储预加载的DOM对象和长度信息
var store = {
    length: 0
};
//图片预加载
for ( var start = indexRange[ 0 ]; start <= indexRange[ 1 ]; start++ ) {
    ( function ( index ) {
        var img = new Image();
        img.onload = function () {
            store.length++;
            store[ index ] = this;
            play();
        };
        img.onerror = function () {
            store.length++;
            play();
        };
        img.src = urlRoot + index + ').jpg';
        //预加载的时候append图片
        eleContainer.appendChild( img );
    } )( start );
}
var play = function () {
    var percent = Math.round( 100 * store.length / maxLength );
    //全部加载完毕
    if ( percent == 100 ) {
        var index = indexRange[ 0 ];
        var step = function () {
        //依次添加class属性通过css控制显示隐藏
            store[ index ].setAttribute( 'class', 'active' )
            index++;
            //超出最大限制
            if ( index <= indexRange[ 1 ] ) {
                setTimeout( step, 42 );
            } else { // 本段播放结束回调
            }
        };
        step()
    }
};

原理其实很简单在预加载的时候append图片,然后给通过控制css属性实现图片的连贯,没什么高超的技巧,但就是这种实现策略,对页面的开销是上面几种方法中最小的,最终运行体验是最好的。如果要播放完重新播放的话就需要移除所有的class

.container {
  width: 100%;
  height: 300px;
  margin: auto;
  background: url('./images/thumbs(1).jpg') no-repeat;
  background-size: 100%;
  position: relative;
  will-change: transform;
}

.container>img {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  opacity: 0;
}

.container>img.active {
  opacity: 1;
  z-index: 1;
}

效果如下,大多数人都会以为是视频,其实就是图片,原理很简单,就是通过创建img标签,添加css属性实现图片显示隐藏,当然你可以通过增删dom元素实现相同的功能,不过那种方式会使图片资源加载慢,若是在线上问题会很大

效果就只这个样子的
至于序列图片,就找贵厂的UI设计师好了,让设计师处理,基本上,AE之类软件应该都了解。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为了在 H5 视频实现自动播放,你需要遵循以下几个步骤: 1. 静音视频:大多数浏览器要求在自动播放视频时将其静音,以提供更好的用户体验。所以,你需要将视频静音。添加 `muted` 属性到 `<video>` 标签中,例如:`<video src="video.mp4" muted></video>`。 2. 用户交互:大多数浏览器要求在自动播放视频之前进行用户交互。你可以使用 JavaScript 在页面加载后触发播放按钮或其他用户交互事件。 3. 自动播放:使用 JavaScript 在用户交互事件中调用 `play()` 方法来启动视频的自动播放。你可以通过获取 `<video>` 元素的引用,并调用 `play()` 方法来实现。示例代码如下: ```html <button id="playButton">点击播放</button> <video src="video.mp4" id="myVideo" muted></video> <script> const playButton = document.getElementById('playButton'); const video = document.getElementById('myVideo'); playButton.addEventListener('click', function() { video.play(); }); </script> ``` 在上述代码中,我们创建了一个按钮 `playButton` 用于触发视频的自动播放。当用户点击按钮时,我们通过获取 `<video>` 元素的引用并调用 `play()` 方法来启动视频的自动播放。 请注意,由于浏览器的限制,自动播放仍然需要用户与页面进行了交互。用户可以通过点击按钮来触发视频的自动播放。 通过以上步骤,你可以在 H5 视频实现自动播放。请确保遵循浏览器的自动播放策略,并提供良好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值