H5实现一个简易本地视频播放器

时间:2025-02-28 07:26:36
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> --> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="../fonts/font_x1hton6tlu9/"> <style> html,body { background-color: #ccc; } *{ margin: 0; padding: 0; } .container { position: relative; width: 700px; height: 500px; background-color: #ccc; margin: 0 auto; margin-top: 100px; display: flex; } .left { flex: 3; background-color: rgb(80, 71, 71 ); } .left_top{ font-size: 25px; height: 100px; text-align: center; line-height:100px; border-bottom: 1px solid rgba(0, 0, 0, 0.096) ; } .left_list{ height: 80%; /* padding-top: 30px; */ background-color: hsla(0, 5%, 41%, 0.959); } .left_list ul{ list-style: none; } .left_list ul li{ height: 30px; border-bottom: 1px solid rgba(219, 202, 202, 0.63); text-align: center; line-height: 30px; } .left_list ul li:nth-child(1){ border-top:1px solid rgba(219, 202, 202, 0.63); } .right { flex:7; background-color:rgba(82, 83, 83, 0.952); } .right_top{ height: 400px; background-color: rgba(19, 20, 20, 0.89); } .right_bottom { height: 100px; } .iconfont{ font-size: 40px; } /* 开关按钮 */ .iconfont.open_down { } /* 全屏按钮 */ . { } /* 进度条 */ .iconfont.progress_bar { } video{ width: 100%; height: 100%; } /* 浮动,让控制元素排成一排 */ .right_controls { width: 100%; position: relative; height: 100%; line-height: 100px; margin-right: 20px; } .controls { margin-right: 10px; } /* 进度条 */ [type="range"]{ /* vertical-align: middle; */ width: 280px; } .voice_controls { position: absolute; width: 100px; transform-origin: left bottom; transform:rotateZ(-90deg); left: 430px; top: 10px; display: none; } /* 控制声音控件地显示与隐藏 */ .show { display: inline; } /* 头部的标题 */ .top_name { position:absolute; font-size: 30px; color: rgba(255, 248, 220, 0.452); top: 0; left: 50%; } </style> </head> <body> <div class="container"> <!-- 左边播放列表部分 --> <div class="left"> <!-- 标题 --> <div class="left_top">播放列表</div> <!-- 列表 --> <div class="left_list"> <ul> <li url="../video/movie01.mp4">01集</li> <li url="../video/movie02.mp4">02集</li> <li url="../video/movie03.mp4">03集</li> <li url="../video/movie04.mp4">04集</li> </ul> </div> </div> <!-- 右边部分 --> <div class="right"> <!-- 视频播放部分 --> <div class="right_top"> <video src="../video/movie01.mp4" ></video> </div> <!-- 视频控制部分 --> <div class="right_controls"> <!-- 开关按钮 --> <i class="controls open_down iconfont icon-bofang "></i> <!-- 全屏控制按钮 --> <i class="controls fullscreen iconfont icon-quanping "></i> <!-- 视频进度条 --> <input class="controls bar" type="range" value="0"> <i class="controls voice iconfont icon-shengyin "></i> <input type="range" class="voice_controls"> </div> </div> <div class="top_name">正在播放</div> </div> <script> // 获取元素 var open_down=(".open_down"); var video=("video"); var bar=(".bar"); var fullscreen=(".fullscreen"); var lis=("li"); var voice_controls=(".voice_controls"); var voice=(".icon-shengyin"); // 播放暂停 open_down.addEventListener("click",function(){ // 判断是否是开启按钮,是就播放 if(open_down.("icon-bofang")){ // 播放 (); open_down.("icon-bofang"); open_down.("icon-iconfront-") }else{ // 暂停 (); open_down.("icon-iconfront-"); open_down.("icon-bofang") } }) // 以上,播放及暂停功能完成 // 视频进度改变,进度条记录变化 ("timeupdate",function(){ // 已播放 var current=; // 视频全程时间 var all=; // 设置给进度条 =(current/all)*100; // 视频播放完毕,自动 if(==100){ open_down.("icon-iconfront-"); open_down.("icon-bofang") } }) // 以上,记录进度功能完成 // 拉进度,改变视频进度 ("change",function(){ =/100*; if(==100){ open_down.("icon-iconfront-"); open_down.("icon-bofang") } }) // 以上,拉进度功能完成 // 全屏功能 ('click',function(){ (); }) // 以上,全屏功能完成 // 切换视频 for(var i=0;i<;i++){ lis[i].addEventListener("click",fn) } // 因为是纯前端实现视频切换,我把视频地址通过自定义属性存在li标签上 function fn(){ =("url"); } // 控制声音,和上面视频进度条的实现原理类似 ("click",function(){ if(!voice_controls.("show")){ // 判断是声音控件是显示地状态还是隐藏地状态,显示的时候就隐藏 voice_controls.("show"); voice_controls.addEventListener("change",function(){ =voice_controls.value/100; })}else{ voice_controls.("show"); } }) </script> </body> </html>