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 WebGL 的垃圾分类系统

    垃圾分类,一般是指按一定规定或标准将垃圾分类储存、分类投放和分类搬运,从而转变成公共资源的一系列活动的总称。分 […]...

  2. html5 二进制文件操作基础

    Blob、ArrayBuffer、File、fileReader、formData这些名词总是经常看到,这些名词里,Blob、ArrayBuffer、File可以归为一类,它们都是数据;而fileReader算是一种工具,用来读取数据;...

  3. HTML5-网页基本信息

    <...

  4. 使用readAsDataURL方法预览图片

    使用readAsDataURL方法预览图片     使用FileReader接口的readAsDataURL方 […]...

  5. 告别传统工业互联网,提高数字管控思维:三维组态分布式能源站

    在网络迅速发展的今天,人们的交流已经不再仅限与面对面,一个视频通话就能拉近彼此之间的距离,而在工业管控上却不仅 […]...

  6. 基于 HTML5 WebGL 的污水处理厂泵站自控系统

    随着城市建设的迅速发展,污水处理设施也在不断增加。更稳定、科学和高效的管理及运行污水处理泵站,建设自动化智能控 […]...

  7. 基于 HTML5 OpenLayers3 实现 GIS 电信资源管理系统

    通过结合 HTML5 和 OpenLayers 可以组合成非常棒的一个地图网络拓扑图的应用,形成的效果可以用来 […]...

  8. 基于 HTML WebGL 的会展中心智能监控系统

    智慧建筑是指通过将建筑物的结构、系统、服务和管理根据用户的需求进行最优化组合,从而为用户提供一个高效、舒适、便 […]...

随机推荐

  1. Linux部署Java环境

    一. yum安装jdk (1)  搜索jdk安装包  yum search java|grep jdk   ( […]...

  2. 实现一个正则表达式引擎in Python(二)

    项目地址:Regex in Python 在看一下之前正则的语法的 BNF 范式 group ::= ("(" […]...

  3. htk 编译

      【转载】Windows下安装htk3.4.1补充说明与问题解决 – [语音处理]   Job! […]...

  4. intellij idea使用心得

    intellij idea使用心得 最近项目使用了IntelliJ IDEA和Git组合,老实说,习惯了MyE […]...

  5. flask完成前后端分离实例

    需求:通过页面点击完成简单的投票系统功能。 相关文件:     设计思路: 1、前端:提供可以投票的入口。查询 […]...

  6. 解决Adobe cs6系列软件在Windows10操作系统中无法正常运行问题

        大家好,我是安德风(QQ1652102745),很高兴今天能给大家一起解决Adobe cs6系列软件在 […]...

  7. Mac下使用XLD转换无损音乐Ape

    最近想要给音乐库增加一些音乐,下载了一些Ape格式的无损音乐,但是无法直接导入到iTunes中,必须经过其他工 […]...

  8. php常用设计模式(大总结)

    本篇文章主要以php语言为基础为大家讲解在php中如何实现各种常见的设计模式。设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理...

展开目录

目录导航