进度条<progress>标签

5.7.1 概述

该元素显示为一个进度条形式,可以使用<progress>标签来显示 javascript 中耗费时间的函数的进度

语法如下:

<progress value = "22" max="100"></progress>
5.7.2 requestAnimationFrame() 方法

requestAnimagionFrame() 方式是浏览器用于定时循环操作的一个 API ,类似于 setTimeout() 。主要用途是按帧对网页进行重绘。帧率为 30帧,专门为浏览器提供动画的 API,当不在本网页时 自动停止刷新,在主线程工作

5.7.3 cancelAnimagionFrame() 方法

取消一个先前通过调用 window.requestAnimagtionFrame() 方法添加到计划中的动画帧请求。

语法如下:

window.cancelAnimationFrame(requestID);
// requestId 是先前调用 window.requestAnimationFrame()方法时返回的ID
5.7.4 代码演示:
<video src="./课前操.mp4" id="media" style="width: 800px; height: 600px;"></video>
    <progress id="prgBar" style="width:100%;"></progress>
    <div id="msg"></div>
    <script>
        let media = document.getElementById('media')
        let prgBar = document.getElementById('prgBar')
        let frameTimer;
        // 添加视频封面
        media.poster = "./e70aee340e2021c7d89c26f6e12601eee5612d7e_raw.jpg"
        var msg = document.querySelector('#msg')

        // 单击播放
        media.onclick = function(){
            if(media.paused || media.ended){
                media.play()
                UpdateProgress();
            }else{
                media.pause()
            }
        }

        // 进度条效果
        function UpdateProgress(){
            if(media.readyState == 4){
                prgBar.max = media.duration;
                prgBar.value = media.currentTime;
                frameTimer = requestAnimationFrame(UpdateProgress);
            }
        }
        
        // 单机进度条 快进
        prgBar.onclick = function(){
            if(media.readyState == 4){
               media.currentTime = (event.offsetX / this.clientWidth) * media.duration
               prgBar.max = media.duration;
               prgBar.value = media.currentTime;
               media.play()
            }
        }

        // 快进之后,进度条重新加载
        media.onseeked = function(){
            UpdateProgress()
        }


        // 全屏
        media.ondblclick = function(){
            if(document.isFullScreen){
                // 退出全屏
                document.exitFullscreen();
            }else{
                // 全屏
                media.requestFullscreen();
            }
        }

        // 结束播放
        media.onended = function(){
            cancelAnimationFrame(frameTimer)
        }
    </script>
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容