zoukankan      html  css  js  c++  java
  • 一个html5视频播放器

    具有播放视频,拖拽,自定义右键菜单,上传头像的功能

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>my videoPodcast</title>
    <style type="text/css">
    *{
    margin: 0;
    padding: 0;
    }
    #box{
    1000px;
    height: 100%;

    }
    #wrap{
    700px;
    height: 900px;
    margin: 0 auto;

    }
    ul{
    list-style: none;
    float: left;
    clear: both;
    margin-top: 4px;
    }
    li{
    150px;
    height: 40px;
    line-height: 40px;
    font:24px/40px "微软雅黑";
    cursor:pointer;
    background:lightgray;
    margin-top: 1px;
    }
    input{
    display: block;
    height: 40px;
    40px;
    border-radius: 5px;
    border: none;
    background: darkgray;
    color: #FFFFFF;
    float: left;
    margin-left: 2px;
    }
    #target{
    180px;
    height: 100px;
    border: 1px solid darkgray;
    float: right;
    }
    #hiddenMenu{
    float: right;
    display: none;

    }

    #picContainer{
    /*float: left;*/
    position: absolute;
    left: 330px;
    top: 410px;
    }
    label{
    display: block;
    180px;
    height: 180px;
    border-radius: 10px;
    border:1px solid darkgray;
    font:50px/180px "微软雅黑";
    text-align: center;
    /*background: url("1.jpg") center no-repeat;*/
    }
    input[type="file"]{
    display:none;
    }

    </style>
    </head>
    <body>
    <div id="box">
    <div id="wrap">

    <video autoplay="false" height="400px" controls="controls">
    <source src="01.mp4"/>
    <source src="01.ogg"/>
    </video>

    <input type="button" value="暂停" />
    <input type="button" value="静音" />
    <input type="button" value="全屏" />


    <ul id="from">
    <li draggable="true">01.mp4</li>
    <li draggable="true">02.mp4</li>
    </ul>
    <!--drag session begin-->
    <div id="target">
    <ul id="to">

    </ul>
    </div>
    <!--drag session end-->

    <!--hidden menu begins-->
    <div id="hiddenMenu">
    <ul>
    <li>收藏视频</li>
    <li>赞赏视频</li>

    </ul>
    </div>
    <!--hiddeb menu ends-->

    <!--pic upload begins-->
    <form id="picContainer">
    <label for="photo">+</label>
    <input type="file" id="photo"/>
    <input type="button" value="提交" / id="submit">
    </form>
    <!--pic upload ends-->
    </div>
    </div>

    <script type="text/javascript">
    var video = document.getElementsByTagName("video")[0];
    var liS = document.getElementsByTagName("li");
    for(var i=0;i<liS.length;i++){


    liS[i].onclick=function(){
    video.src=this.innerHTML;
    for(var j=0;j<liS.length;j++){
    liS[j].style.background="lightgray";
    }
    this.style.background="darkgray";
    }



    }
    video.oncanplay=function(){
    console.log(video.duration);

    }
    video.ontimeupdate=function(){
    console.log(video.currentTime);

    }
    var inp = document.getElementsByTagName("input")[0];
    var mut = document.getElementsByTagName("input")[1];
    var fullScreen=document.getElementsByTagName("input")[2];

    inp.onclick=function(){
    if(inp.value=="暂停"){
    video.pause();
    inp.value="播放"

    inp.style.background="lightgray";

    }else{
    video.play();
    inp.value="暂停"
    // video.webkitRequestFullScreen();
    inp.style.background="darkgray";
    }

    }
    mut.onclick=function(){
    if(mut.value=="静音"){
    video.muted=true;
    mut.value="音量"
    mut.style.background="lightgray";

    }else{
    video.muted=false;
    mut.value="静音"
    mut.style.background="darkgray";

    }
    }
    fullScreen.onclick=function(){
    video.webkitRequestFullScreen();
    }
    //拖动功能
    var target=document.getElementById("target");
    var ul=document.getElementById("from");
    var liS=ul.children;
    var node=null;

    for(var i=0;i<liS.length;i++){
    liS[i].ondrag=function(){
    node=this;
    }
    }

    target.ondragover=function(e){
    var event = e||window.event;
    //阻止浏览器默认事件,drop才会发生
    e.preventDefault();
    }
    target.ondrop=function(){
    target.children[0].appendChild(node);
    }

    //自定义右键菜单
    var hidderMenu=document.getElementById("hiddenMenu");

    target.oncontextmenu=function(){
    hidderMenu.style.display="block";

    return false;
    }
    var box=document.getElementById("box");
    box.onclick=function(){
    hidderMenu.style.display="none";
    }

    //上传图片并显示
    var fr = new FileReader();
    var label = document.getElementsByTagName("label")[0]
    var sub = document.getElementById("submit");
    var fileInp = document.getElementById("photo");
    sub.onclick=function(){
    var file = fileInp.files[0];
    fr.readAsDataURL(file);
    fr.onloadend=function(){
    label.style.background = "url("+fr.result+") center no-repeat"
    }
    }

    </script>
    </body>
    </html>

     页面如下:

     拖动条实现:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <style type="text/css">
                *{
                    margin: 0;
                    padding: 0;
                    box-sizing: border-box;
                }
                div.box{
                     500px;
                    margin:60px auto;
                }
                video{
                     500px;
                    margin-bottom:5px;
                    display: block;
                }
                div.control{
                     500px;
                    height: 10px;
                    background:#ccc;
                    position: relative;
                }
                div.progress{
                     0;
                    height: 10px;
                    background: orange;
                    border-radius: 5px;
                }
                div.pointer{
                     20px;
                    height: 16px;
                    border-radius: 5px;
                    position: absolute;
                    top:-3px;
                    background:darkgray;
                }
            </style>
        </head>
        <body>
        <div class="box">
            <video src="01.mp4">
                
            </video>
            <div class="control">
                <div class="progress"></div>
                <div class="pointer" draggable=true></div>
            </div>
        </div>
        <script type="text/javascript">
                //获取相关元素
                var video = document.querySelector("video");
                var control = document.querySelector(".control");
                var progress = document.querySelector(".progress");
                var pointer = document.querySelector(".pointer");
                //获取相关距离
                var totalWidth= control.offsetWidth-pointer.offsetWidth;
                var currentTime = 0;
                var duration = 0;
                var x=0;
                var percent=0;
                //视频是否能够播放
                video.oncanplay=function(){
                    duration = video.duration;
                    //绑定事件
                    control.ondragover=function(e){
                        var e= e||window.event;
                        e.preventDefault();
                        x = e.clientX - control.offsetLeft;
                        percent = x/totalWidth;
                        if(percent>1){
                            return;
                        }
                        pointer.style.left = x+"px";
                        progress.style.width = x+"px";
                        video.currentTime = duration*percent;
                    }
                    control.ondrop=function(){
                        video.play();
                    }
                    control.onclick=function(e){
                        var e = e||window.event;
                        x = e.clientX - control.offsetLeft;
                        if(x>totalWidth){
                            x = totalWidth;
                        }
                        pointer.style.left = x+"px";
                        progress.style.width = x+"px";
                        percent = x/totalWidth;
                        video.currentTime = duration*percent;
                        video.play();
                    }
                }
                //视频播放时,更新进度
                video.ontimeupdate=function(){
                    currentTime = video.currentTime;
                    percent = currentTime/duration;
                    if(percent>1){
                        return;
                    }
                    x = percent*totalWidth;
                    pointer.style.left = x+"px";
                    progress.style.width = x+"px";
                }
                //点击进度control更新进度
    
    
        </script>
        </body>
    </html>
  • 相关阅读:
    bzoj3380+3381+3382+3383 Usaco2004 Open
    浅谈树链剖分(C++、算法、树结构)
    小学奥数 最大公约数与最小公倍数
    小学奥数 质数的和与积
    小学奥数 分苹果
    小学奥数 连乘积末尾0的个数
    小学奥数 李白的酒
    小学奥数 回文数个数
    小学奥数 等差数列末项计算
    小学奥数 地球人口承载力估计
  • 原文地址:https://www.cnblogs.com/rlann/p/6270725.html
Copyright © 2011-2022 走看看