zoukankan      html  css  js  c++  java
  • HTML5css3学习总结(3)

    html多媒体
        video与audio两个多媒体标签基本上使用方法一样,没有什么太大的区别。
        <video src="statics/.mp4"
            muted  静音
            autoplay 自动播放
            loop   循环
            constrols 控制面板
            ></video>
    oVideo
        .play() 播放
        .pause() 暂停
        .volume 音量
        .muted 静音
        .currentTime 当前播放的时间
        .duration  已经播放的时间
        .onended 播放结束
        .ontimeupdate 返回当前播放的进度
        .webkitRequestFullscreen()全屏 chrome
        .mozRequestFullScreen()全屏 Firefox

    音乐播放器代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            li{
                cursor: pointer;
            }
    
            li:hover{
                color: grey
            }
    
            li.active{
                color: silver;
            }
    
            li.active:before{
                content: url(statics/play.gif);
            }
        </style>
    </head>
    <body>
        <ul id="wrapper">
        </ul>
        <audio src="" controls></audio>
        <br>
        <button id="play">播放</button>
        <button id="pause">暂停</button>
        <button id="previous">上一首</button>
        <button id="next">下一首</button>
        <br>
        <input type="range" min="0" max="100" value="100">
    
        <button class="play-mode" id="listRepeat">列表循环</button>
        <button class="play-mode" id="singleRepeat">单曲循环</button>
        <button class="play-mode" id="random">随机播放</button>
        <script>
            var oUl = document.querySelector('ul');
            var oAudio = document.querySelector('audio');
            var oRange = document.querySelector('input');
            var oPlay = document.querySelector('#play');
            var oPause = document.querySelector('#pause');
            var oNext = document.querySelector('#next');
            var oPrevious = document.querySelector('#previous');
    
            var aPlayMode = document.querySelectorAll('.play-mode');
    
            var currentIndex = 0;
    
            var playMode = "listRepeat";
    
            // 调整音量
            oRange.oninput = function(){
                oAudio.volume = oRange.value/100;
            }
    
            // 播放
            oPlay.onclick = function(){
                playSong();
            }
    
            // 暂停
            oPause.onclick = function(){
                oAudio.pause();
            }
            //歌曲列表
            var songs = [
                "花房姑娘",
                "喜剧之王",
                "counting-stars",
                "greenslave",
                "young-for-you"
            ]
            //循环歌曲列表,创建div添加到页面上
            songs.forEach(function(song){
                var oLi = document.createElement('li');
                    oLi.innerHTML = song;
    
                oUl.appendChild(oLi);
            })
    
            var aLi = document.querySelectorAll('li');
    
            // 下一首
            oNext.onclick = function(){
                // 根据播放模式选取下一首歌
                playNextSong();
            }
    
            oAudio.onended = function(){
                // 根据播放模式选取下一首
                playNextSong();
            }
    
            // 上一首
            oPrevious.onclick = function(){
                playPreviousSong()
            }
    
            // 点击播放
            aLi.forEach(function(oLi,index){
    
                oLi.onclick = function(){
                    currentIndex = index;
                    playSong();
                }
            })
    
            // 播放模式更改
            aPlayMode.forEach(function(oPlayMode){
                oPlayMode.onclick = function(){
                    playMode = this.id;
                    console.log(playMode);
                }
            })
    
            // 播放下一首歌的判断逻辑
            function playNextSong(){
                if( playMode == 'listRepeat' ){
                    currentIndex++;
                    currentIndex = currentIndex%songs.length;
                    playSong();
    
                } else if( playMode == 'singleRepeat' ){
                    playSong();
                } else if( playMode == 'random' ){
                    currentIndex = rnd(0,songs.length,currentIndex);
                    playSong();
                }
            }
            //上一首
            function playPreviousSong(){
                if( playMode == 'listRepeat' ){
                    currentIndex -- ;
                    if( currentIndex < 0 ){
                        currentIndex = songs.length - 1
                    }
    
                    playSong();
                } else if( playMode == 'singleRepeat' ){
                    playSong();
                } else if( playMode == 'random' ){
                    currentIndex = rnd(0,songs.length,currentIndex);
                    playSong();
                }
            }
    
            function playSong(){
                oAudio.src = `statics/music/${songs[currentIndex]}.mp3`;
    
                // 移除原activeDOM节点
                var activeOne = document.querySelector('.active')
    
                activeOne && activeOne.classList.remove('active');
    
                aLi[currentIndex].classList.add('active');
    
                oAudio.play();
            }
            
            function stopPlay(){
    
                var oActive = document.querySelector('.active');
    
                oActive && oActive.classList.remove('active');
    
                // 停止播放
                oAudio.currentTime = 0;
                oAudio.pause();
            }
            //随机数,传入一个special的值,下面用于判断。如果这个值有了。就从新随机,没有的话就直接return
            function rnd(n,m,special){
                var result = parseInt(Math.random()*(m-n)+n);
    
                return result == special ? rnd(n,m,special) :result
            }
    
        </script>
    </body>
    </html>


    视频格式
    mp4 √
    avi rmvb flv mov mkv 3gp wmv
    音频格式
    mp3 √
    wma ape m4a




    <input>表单
        type="emial" form内部有格式验证 靠不住
    以下属性boolean对其无效
    pattern="[A-Za-z]{3}"。用于输入框验证输入的类型 正则
    <input type='text' readonly />readonly表示只读,不能更改;
    disabled 阻止点击 禁用
    placeholder占位符 输入框占位文字
    <input type="text"  required/> 必须输入内容才能提交;
    autofocus 自动聚焦输入框
        type="color" 颜色
        type="time" 时间
        type="date" 日期
        type="week" 周末
        type="search" 搜索 输入框有个清空按钮;
        type="file" 文件



    HTML5文件拖拽
    ondragenter
        拖拽文件进入
    ondragleave
        拖拽文件离开
    ondragover
        拖拽文件悬停(一直触发)
    ondrop丢下文件
        想要触发:
            必须取消dragover的默认事件
        ev -> ev.dataTransfer.files
    ondragenter与ondragleave有问题,用setTimeout加上ondragover模拟;
    FileReader

    // 文件对象
        var file = ev.dataTransfer.files[0];
        var reader = new FileReader(); 文件读取对象
        
            reader下面有两个事件
                .readAsText只读文本(ev.srcElement.files[0])
                .readAsDataURL图像、视频、音频(ev.srcElement.files[0])

            reader
                .onloadstart 文件加载开始
                .onprogress 文件加载中{loaded  total}可以得出进度条比例
                .onload 可以拿到reader.reslut的数据
                .onloadend 文件加载完成;

                .error 文件加载失败
                .abort 文件加载终止

                .abort();文件加载终止

            读取文件:
                reader.result

            文本文件:文本
            多媒体文件:base64编码

    input type="file"
        ev -> srcElement -> files

    11
  • 相关阅读:
    【Linux编程基础】构建Linux 库文件
    【Linux调试技术】查看数据
    【C++学习】复制构造函数和赋值运算符根本的不同
    【C++学习】显式构造函数
    【C++学习】函数对象和Lambda表达式
    【C++学习】类初始化列表的分析总结
    【Linux开发基础】Linux守护服务进程(Daemon service)编程
    【编程小结】C++和Java 的缺省初始化问题
    SQL查询金额去掉小数点后面的零
    SQL自定义函数split 将数组(分隔字符串)返回阵列(表)
  • 原文地址:https://www.cnblogs.com/milx/p/6140691.html
Copyright © 2011-2022 走看看