HTML5 audio标签自制音乐播放器

jiaoyu121 2021-09-04 原文


HTML5 audio标签自制音乐播放器

相关技能

  • HTML5+CSS3(实现页面布局和动态效果)
  • Iconfont(使用矢量图标库添加播放器相关图标)
  • LESS (动态CSS编写)
  • jQuery(快速编写js脚本)
  • gulp+webpack(自动化构建工具,实现LESS,CSS,JS等编译和压缩代码)

实现的功能

  • 播放暂停(点击切换播放状态)
  • 下一曲(切换下一首)
  • 随机播放(当前歌曲播放完自动播放下一曲)
  • 单曲循环(点击随机播放图标可切换成单曲循环)
  • 音量调节(鼠标移入滑动设置音量大小)
  • 歌曲进度条(可点击切换进度直接跳,也可以点击小圆点拖拽切换进度)
  • 实时歌词(点击词,切换歌词界面,根据实时进度自动滚动歌词)
  • 喜欢(点击添加了一个active效果)
  • 分享(可以直接分享到新浪微博)

audio 标签使用

  • autoplay 自动播放
  • loop 循环播放
  • volume 音量设置
  • currentTime 当前播放位置
  • duration 音频的长度
  • pause 暂停
  • play 播放
  • ended 返回音频是否已结束

播放和暂停代码

_Music.prototype.playMusic = function(){
    var _this = this;
    this.play.on(\'click\', function(){
        if (_this.audio.paused) {
            _this.audio.play();
            $(this).html(\'\');
        } else {
            _this.audio.pause();
            $(this).html(\'\')
        }
    });
}

音乐进度条代码

_Music.prototype.volumeDrag = function(){
    var _this = this;
    this.btn.on(\'mousedown\', function(){
        _this.clicking = true;
        _this.audio.pause();
    })
    this.btn.on(\'mouseup\', function(){
        _this.clicking = false;
        _this.audio.play();
    })
    this.progress.on(\'mousemove click\', function(e){
        if(_this.clicking || e.type === \'click\'){
            var len = $(this).width(),
                left = e.pageX - $(this).offset().left,
                volume = left / len;
            if(volume <= 1 || volume >= 0){
                _this.audio.currentTime =  volume * _this.audio.duration;
                _this.progressLine.css(\'width\', volume *100 +\'%\');
            }
        }
    });
}

歌词添加代码

_Music.prototype.readyLyric = function(lyric){
    this.lyricBox.empty();
    var lyricLength = 0;
    var html = \'<div class="lyric-ani" data-height="20">\';
    lyric.forEach(function(element,index) {
        var ele = element[1] === undefined ? \'^_^歌词错误^_^\' :  element[1];
        html += \'<p class="lyric-line" data-id="\'+index+\'" data-time="\' + element[0] + \'"> \' +  ele + \' </p>\';
        lyricLength++;
    });
    html += \'</div>\';
    this.lyricBox.append(html);
    this.onTimeUpdate(lyricLength);
}

代码还有很多就不一一添加了,觉得还行的话可以点下喜欢(也可以在我的GitHub给个Star),你的喜欢和Star是我继续创作的动力,非常感谢!!!源码加群

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群
343599877,我们一起学前端!

发表于
2017-06-17 17:21 
狙击手+ 
阅读(1127
评论(0
编辑 
收藏 
举报

 

版权声明:本文为jiaoyu121原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jiaoyu121/p/7040808.html

HTML5 audio标签自制音乐播放器的更多相关文章

  1. HTML5 Canvas 数据持久化存储之属性列表

    属性列表想必大家都不会陌生,正常用 HTML5 来做的属性列表大概就是用下拉菜单之类的,而且很多情况下,下拉列 […]...

  2. 基于 WebGL 的 HTML5 楼宇自控 3D 可视化监控

    智慧楼宇和人们的生活息息相关,楼宇智能化程度的提高,会极大程度的改善人们的生活品质,在当前工业互联网大背景下受 […]...

  3. 基于 HTML5 Canvas 的拓扑组件 ToolTip 应用

    ToolTip 效果是网页制作中常见的使用特效。当用户将鼠标悬浮在某个控件上时,ToolTip 显示并向用户展 […]...

  4. 分享40款效果非常漂亮的 HTML5 & CSS3 网站模板,模板免费下载

    HTML5 作为下一代网页语言,加入中众多更具语义的标签,例如video、audio、section、arti […]...

  5. HTML5 WebSocket

    HTML5 WebSocket 菜鸟教程的图片介绍: websocket是html5开始提供的一种在单个TCP连接上进行全双工通讯的协议 。 - 优点:使客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。 这些...

  6. 基于 HTML5 WebGL 的 3D 科幻风机

    前言   许多世纪以来,风力机同水力机械一样,作为动力源替代人力、畜力,对生产力的发展发挥过重要作用。近代机电 […]...

  7. 快速开发 HTML5 交互式地铁线路图

    前言 前两天在 echarts 上寻找灵感的时候,看到了很多有关地图类似的例子,地图定位等等,但是好像就是没有 […]...

  8. HTML5 WEB SQL 无法创建数据表的问题

    不知是什么原因, 反复试, 最后发现是数据表的某一列的字段用的是'check', 把它改了后, 就一切顺利了:无法创建数据表:db.transaction(function (tx) { tx.executeSql(...

随机推荐

  1. 17秋 软件工程 第六次作业 Beta冲刺 Scrum3

    17秋 软件工程 第六次作业 Beta冲刺 Scrum3 各个成员冲刺期间完成的任务 世强:完成手势签到模块, […]...

  2. WordPress使用PHPMailer发送gmail邮件

    wordpress使用phpmailer发送gmail邮件 0.保证用于gmail账号已经开启imap服务,且 […]...

  3. 小程序的学习备注

    navigator  url open-type redirect switch image 的mode模式 […]...

  4. SEO配置信息操作文档

    一、title(网站标题)        title,就是浏览器上显示的那些内容,不仅用户能看到,也能被搜索引 […]...

  5. Java基础?看完以后再也不惧怕面试了

    前言 这篇文章主要是Java基础部分,主要分为3个部分:Java集合、Java多线、JVM;这些东西帮助我面试 […]...

  6. 前端微服务的理解

    从去年开始,前端领域就出现了一个‘微应用’的名词,说的是前端架构的一种设计思路,业内都把它和后端的微服务进行类 […]...

  7. 总结一些零基础学习Python需要面对的一些问题

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以 […]...

  8. 求最长子串长度

    题目 在一个以空格分割的字符串,如“asd asdasd sd asdasdas sdasdasdsdd”中, […]...

展开目录

目录导航