html5播放视频全屏-JS自定义多媒体视频控制栏(控制视频播放、进度、全屏情况)很好用

2023-09-05 0 10,000 百度已收录

本文链接:

案例参考

让我们看一下一些视频控件

HTML代码

我们自定义了控制栏的实现,所以视频中没有使用controls属性

播放其他网站的视频时html5播放视频全屏,我们通常要自己实现控制栏才能达到我们想要的效果。 视频提供的控制栏的相关属性很难改变,而且可能与网站不符,不美观。

html代码

<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义视频控制条</title>
    <link rel="stylesheet" href="css/index.css">
    <link rel="stylesheet" href="css/font-awesome.min.css">
</head>
<body>
    <div class="wrap">
        <h3>视频控制案例</h3>
        <div class="content">
            <div class="player">
                <video src="source/trailer.mp4">
                您的浏览器不支持 video 标签。
                </video>
                <div class="control">
                    <div class="fa fa-play play_pause"></div>
                    <div>
                        <span class="progress"></span>
                    </div>
                    <div class="timer">
                        <span class="progress_timer">00:00:00</span>/
                        <span class="duration_timer">00:00:00</span>
                    </div>
                    <div class="fa fa-expand expand"></div>
                </div>
            </div>
        </div>
    </div>            
</body>
<script src="js/index.js"></script>
</html>

CSS代码

*{
    margin: 0;
    padding: 0;
}
/* 去掉全屏时显示的自带控制条 */
video::-webkit-media-controls{
    display:none !important;
}
.wrap h3{
    text-align: center;
    height: 100px;
    line-height: 100px;
}
.player{
    width: 720px;
    height: 400px;
    margin: 0 auto;
    position: relative;
}
.player video{
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    height: 100%;
}
.player .control{
    position: absolute;
    background: rgba(255,255,0,0.3);
    width: 680px;
    height: 40px;
    border-radius: 5px;
    left: 50%;
    bottom: 10px;
    transform: translateX(-50%);
}
.player .control div{
    display: inline-block;
    line-height: 40px;
    margin-left: 10px;
    font-size: 18px;
    color: #fff;
}
.player .control .play_pause,.player .control .expand{
    color: rgb(255,255,0);
}
.player .control div:nth-child(2){
    width: 460px;
    height: 10px;
    background-color: rgba(255,255,255,0.3);
    border-radius: 5px;
    overflow: hidden;
}
.player .control .progress{
    display: block;
    width: 10%;
    height: 10px;
    background: #fff;
}
.player .control .timer{
    font-size: 12px;
}

效果预览

html5播放视频全屏-JS自定义多媒体视频控制栏(控制视频播放、进度、全屏情况)很好用

JS代码实现播放暂停

属性:paused 设置或返回视频是否暂停

方法:play()开始播放视频。 暂停():暂停当前播放的视频。

代码

// 获取元素
var videoObj = document.querySelector('video')
var playBtn = document.querySelector('.play_pause')
// 0.实现播放按钮
// 1.获取所需要的元素
// 2.点击播放按钮控制视频的播放
// 3.切换为暂停按钮
// 4.点击暂停按钮实现暂停
// 5.实现切换
playBtn.addEventListener('click', function(){
    if(videoObj.paused){
        // 如果视频处于播放状态
        videoObj.play()
        this.classList.remove('fa-play')
        this.classList.add('fa-pause')
    }else{
        videoObj.pause()
        this.classList.add('fa-play')
        this.classList.remove('fa-pause')
    }
})

html5播放视频全屏-JS自定义多媒体视频控制栏(控制视频播放、进度、全屏情况)很好用

4、功效

在此插入图片描述

实施时间

属性:currentTime 设置或返回视频中的当前播放位置(以秒为单位)。 持续时间返回视频的宽度(以秒为单位)

方法:oncanplay:当用户可以开始播放视频/音频(audio/video)时触发。 ontimeupdate:使用此事件报告当前播放进度

代码

html5播放视频全屏-JS自定义多媒体视频控制栏(控制视频播放、进度、全屏情况)很好用

var progressTimer = document.querySelector('.progress_timer')
var durationTimer = document.querySelector('.duration_timer')
// 0.实现时间
// 1.获取所需的元素
// 2.时间格式为:hh:mm:ss
// 3.获取总时间,并格式化
// 4.获取当前视频时间,并格式化
// 5.渲染到页面
let {totalT,presentT} = {totalT:0,presentT:0}
videoObj.addEventListener('canplay',function(){
    totalT = this.duration
    var videoDuration = formatTime(totalT)
    durationTimer.innerHTML = videoDuration
})
videoObj.addEventListener('timeupdate',function(){
    presentT = this.currentTime
    var videoCurrent = formatTime(presentT)
    progressTimer.innerHTML = videoCurrent
})
function formatTime(t){
    var h = parseInt(t/3600)
    h = h<10?'0'+h:h 
    var m = parseInt(t%3600/60)
    m = m<10?'0'+m:m
    var s = parseInt(t%60)
    s = s<10?'0'+s:s
    return h+':'+m+':'+s
}

实现进度

在播放进度上实现

var progress = document.querySelector('.progress')
//0.实现进度条 
//1.获取所需元素
//2.根据时间来实现百分比
var percent = presentT/totalT*100
progress.style.width = percent+'%'

实现全屏

html5播放视频全屏-JS自定义多媒体视频控制栏(控制视频播放、进度、全屏情况)很好用

全屏:video.webkitRequestFullScreen();

// 0.实现全屏
var expand = document.querySelector('.expand')
expand.addEventListener('click',function(){
    videoObj.webkitRequestFullScreen()
})

然而,这将覆盖我们的自定义控制栏

使用增强层并不能解决问题

使用useragentstylesheet修改是不行的

我们可以使用视频存储容器来实现全屏html5播放视频全屏,然后视频可以根据父元素进行变化

var videoObj = document.querySelector('video')
var playBtn = document.querySelector('.play_pause')
var progressTimer = document.querySelector('.progress_timer')
var durationTimer = document.querySelector('.duration_timer')
var progress = document.querySelector('.progress')
var player = document.querySelector('.player')
var expand = document.querySelector('.expand')
playBtn.addEventListener('click', function(){
    if(videoObj.paused){
        // 如果视频处于播放状态
        videoObj.play()
        this.classList.remove('fa-play')
        this.classList.add('fa-pause')
    }else{
        videoObj.pause()
        this.classList.add('fa-play')
        this.classList.remove('fa-pause')
    }
})
let {totalT,presentT} = {totalT:0,presentT:0}
videoObj.addEventListener('canplay',function(){
    totalT = this.duration
    var videoDuration = formatTime(totalT)
    durationTimer.innerHTML = videoDuration
})
videoObj.addEventListener('timeupdate',function(){
    presentT = this.currentTime
    var videoCurrent = formatTime(presentT)
    progressTimer.innerHTML = videoCurrent
    var percent = presentT/totalT*100
    progress.style.width = percent+'%'
})
function formatTime(t){
    var h = parseInt(t/3600)
    h = h<10?'0'+h:h 
    var m = parseInt(t%3600/60)
    m = m<10?'0'+m:m
    var s = parseInt(t%60)
    s = s<10?'0'+s:s
    return h+':'+m+':'+s
}
expand.addEventListener('click',function(){
    player.webkitRequestFullScreen()
})

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 html5 html5播放视频全屏-JS自定义多媒体视频控制栏(控制视频播放、进度、全屏情况)很好用 https://www.wkzy.net/game/193489.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务