近年来,H5的流行,加入许多标签,导致一些新手看起来有些懵,有点不太会用新标签,今天,举一个H5里比较常用的标签,audio标签,这个标签的作用在于添加一个音乐标签,可以实现它的样式,暂停,播放,快进及后退功能。其他功能比如播完一首歌,自动回到起点,或者播完一首歌,到下一首歌自动播放等功能暂未实现。以下代码仅供初学H5学习和交流,大佬请忽略。代码健壮性考虑的不周到,实现后前进后退滑动不顺畅,还请大佬提出好的解决方法。

<!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>
    <style>
        .relative{
            position: relative;
            /*  根据自身定位  并且自身的位置保留不变 */
        }
        .absolute{
            position: absolute;
            /* 根据最近的有定位的父元素  自身位置被顶替*/
        }
        .top10{
            top: 10px;
        }
        .left10{
            left: 10px;
        }
        .top50{
            top: 50px;
        }
        .left50{
            left: 50px;
        }
        .display-none{
            display: none;
        }
        .h100{
            height: 100px;
        }
        .l120{
            left: 120px;
        }
        .process-background{
            width: 400px;
            height: 4px;
            background: #ccc;
        }
        .process-played{
            height: 4px;
            background: #ff9900;
            width: 0;
        }
        .circle{
            width: 15px;
            height: 15px;
            background: #ff9900;
            border-radius: 50%;
            top: -5px;
            box-shadow: 0 0 5px #aaa;
            left: 0;
        }
        .ml50{
            margin-left: 50px;
        }
        .mt20{
            /* margin-top: 20px; */
        }
    </style>
</head>
<body>
    <!-- autoplay   自动播放 -->
    <audio class="au" src="source/Adam Lambert - Mad World.mp3" controls></audio>
    <div class="relative">
        <div class="relative w100 h100">
            <img class="absolute play" width="50" οnclick="play()" src="img/play.jpg" alt="">
            <img class="absolute display-none pause" width="50" οnclick="pause()" src="img/stop.jpg" alt="">
        </div>
        <p class="absolute l120 top10">
            <span class="current">00:00</span>/
            <span class="total">00:00</span>
        </p>
        <div class="process mt20 ml50">
            <div class="process-background relative">
                <div class="process-played"></div>
                <div οnmοusedοwn="start()" class="circle absolute"></div>
            </div>
        </div>
    </div>

以下是JS代码,主要实现 播放、暂停、前进、后退功能。

<script>
        var audio = document.querySelector('.au')
        var timer;
        var precent;
        function play () {
            audio.play()
            document.querySelector('.play').classList.add('display-none')
            document.querySelector('.pause').classList.remove('display-none')
            document.querySelector('.total').innerHTML = countTime(audio.duration)
            timer = setInterval(function(){
                // console.log(audio.currentTime)   当前播放时长
                document.querySelector('.current').innerHTML = countTime(audio.currentTime)
                document.querySelector('.circle').style.left = ((audio.currentTime / audio.duration) * 400) + 'px'
                document.querySelector('.process-played').style.width = ((audio.currentTime / audio.duration) * 400) + 'px'
            },1000)
        }
        function pause () {
            audio.pause()
            clearInterval(timer)
            document.querySelector('.play').classList.remove('display-none')
            document.querySelector('.pause').classList.add('display-none')

}

// 把秒数转换成为 有分钟的时间
        function countTime (time) {
            var minutes = Math.floor(time / 60)
            var seconds = Math.floor(time % 60) + 1
            if (seconds < 10) {
                seconds = '0' + seconds  //如果秒小于10,前面加个0
            }
            if (minutes < 10) {
                minutes = '0' + minutes  //如果分钟小于10,前面加个0
            }
            return minutes + ':' + seconds
        }

function start (e) {
            document.body.onmousemove = function(){
                e = window.event || e
                move(e)
            }

}     //兼容IE和谷歌、火狐浏览器

function move (e) {
            var ml = e.clientX      // 鼠标距离浏览器左边的值
            // 如果鼠标距离浏览器左边的值  小于  控制点所能到达的最左边  那么控制点的left为0
            var process_left = document.getElementsByClassName('process')[0].clientLeft + 50;
            if (ml < process_left) {
                document.querySelector('.circle').style.left = '0px'
                precent = 0;
                // 如果鼠标距离浏览器左边的值  大于 控制点所能到达的最右边  那么控制点的left值为400
            } else if (ml > (document.querySelector('.process-background').clientWidth) + 50) {
                document.querySelector('.circle').style.left = '400px'
                precent = 1;
            } else {
                // 鼠标在进度条的范围内移动   控制点的left值  就等于  鼠标距离浏览器的左边的值 - 控制点所能到达的最左边
                document.querySelector('.circle').style.left = (ml - 50) + 'px'
                precent = (ml - 50) / 400
            }
            document.body.οnmοuseup=function() {
                end();
            }
        }
        function end () {
            document.body.onmousemove = null;
            // 播放器当前播放时间  = (控制点的left值  总宽度) * 播放总时长
            audio.currentTime = precent * audio.duration
        }
        // 当播放器播放完毕 执行的回调函数
        audio.onended = function () {
            console.log(1111)     //这个功能仅打印测试,有想实现的小伙伴自行测试一下~
        }

// 当前播放时长          控制点的left值
        // ————————————    =    —————————————
        // 总播放时长              总宽度

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

基于HTML5实现音乐播放暂停及快进后退功能相关推荐

  1. Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲)

    Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲) 准备 1.储存在raw文件夹 2. ...

  2. 基于Qt的音乐播放器(二)切换歌曲,调节音量,调节语速,暂停

    2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票! 我的投票地址:点击为我投票 文章目录 1.切换歌曲 2.调节音量 3.调节语速 4.播放/暂停 5.我们来看下效果 6.关于上一篇提 ...

  3. html5中音乐播放器怎么写,打造属于自己的音乐播放器 HTML5之audio标签

    我的音乐播放器 HTML5中增加了Audio和Video标签,这两个标签的用法非常相似.功能却是相当强大,我们先来看一下Audio标签各个浏览器的支持情况.这里用的依然是Can I Use这个在线网站 ...

  4. 基于单片机的音乐播放器设计

     word完整版可点击如下下载>>>>>>>> 基于单片机的音乐播放器设计-硬件开发文档类资源-CSDN下载内容包括详细设计文档word版,附带开题报告 ...

  5. 直播弹幕 html5,一种基于HTML5的弹幕播放器及其方法与流程

    本发明涉及互联网技术领域,具体涉及一种基于HTML5的弹幕播放器及其方法. 背景技术: 弹幕是指一种在观看视频时,大量以字幕(有且不限于文字和图片)形式呈现的评论与视频同在一个画面的现象.在视频上方大 ...

  6. 基于python的音频播放器_基于python实现音乐播放器代码实例

    基于python实现音乐播放器代码实例,一首,函数,按钮,布局,音乐 基于python实现音乐播放器代码实例 易采站长站,站长之家为您整理了基于python实现音乐播放器代码实例的相关内容. 核心播放 ...

  7. 基于C#的音乐播放器

    效果图: 实现了基本功能: 歌词显示功能: 播放功能: 切歌功能: 进度条拖动播放功能: 下面是用到的一些变量 List<string> MusicList = new List<s ...

  8. android服务绑定音乐播放器,Android基于Service的音乐播放器

    本文开发一个基于Service的音乐播放器,音乐由后台运行的Service负责播放,当后台的播放状态发生变化时,程序将会通过发送广播通知前台Activity更新界面:当点击Activity的界面按钮时 ...

  9. php手机端 调用音乐播放器,HTML_仿酷狗html5手机音乐播放器主要部分代码,HTML5作品,经测试,效果确定 - phpStudy...

    仿酷狗html5手机音乐播放器主要部分代码 HTML5作品,经测试,效果确定不错,遗憾的是只支持谷歌和苹果等以webkit核心的浏览器,网友体验的时候请使用谷歌等浏览器来运行,不然的话无法看到效果,不 ...

最新文章

  1. 用一句JQuery代码实现表格的简单筛选
  2. 【EventBus】事件通信框架 ( 订阅类-订阅方法缓存集合 | 事件类型-订阅者集合 | 订阅对象-事件类型集合 )
  3. OpenGL延迟着色之三
  4. 从零开始学_JavaScript_系列(21)——dojo(8)(手把手教你封装一个widget)
  5. Lang.NEXT 2012相关Session
  6. SQL Server CLR 集成简介
  7. 自定义控件-实现TextBox的禁止粘贴
  8. Python《wallpaper abyss壁纸》
  9. python 邮件中生成图表_60秒一口Python:147个demo,助你从新手小白步步进阶编程高手...
  10. 【Vue】—子级向父级传递数据
  11. js删除服务器上文件,js删除服务器文件
  12. inDesign入门教程,如何添加阴影效果?
  13. PowerBuilder GRID美化
  14. 法勒二维码读头数据读写测试
  15. Simulink入门--创建简单模型
  16. 贷款软件测试经典bug描述,如何描述bug
  17. nRF51822 DTM 测试 不能连续发送数据
  18. ThreadLocal使用场景
  19. 金融经济学二十五讲--徐高
  20. 如何删除kafka消费组

热门文章

  1. 民法典计算机论题相关辑录
  2. 2022年一级建造师考试《水利水电工程》复习题及答案
  3. Ultraedit使用:配置字数统计工具栏
  4. 晶振两端的谐振电容有特殊要求吗_技术文章——无源晶振的频率测量方法
  5. 雷天大壯 (易經大意 韓長庚)
  6. 地天泰:沟通倾听;天地否:乞丐霸主
  7. 再见2020你好2021句子_告别2020迎接2021说说朋友圈文案大全
  8. 程序员的生存技巧 — 搜索技巧
  9. 图的基本概念辨析,包括连通图、极大连通子图、连通分量、强连通图、极大强连通子图等
  10. python中的方法什么意思_什么是Python中的“方法”?