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. HTML5新特性

    (1)语义标签定义了文档的头部区域 定义了文档的尾部区域定义文档的导航定义文档中的节(section、...

  3. HTML5 Games Development Foundation All In One

    HTML5 Games Development Foundation All In OneHTML5 游戏开发基础汇总技术CanvasWebGL库/游戏引擎Phaser.js术语/专有名词世界舞台场景对象:显示对象, 容器对...

  4. HTML5

    HTML的全称为Hyper Text Markup Language超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成...

  5. HTML5 中input 的新属性autocomplete

    来源:https://blog.csdn.net/YingUser/article/details/124564266autocomplete:表示自动填充,在input中autocomplete属性是默认开启的1、定义:autoco...

  6. [html] html5哪些标签可以优化SEO?

    [html] html5哪些标签可以优化SEO? 跟标签语义化有关,从上往下:metatitlenavheadermainarticlesectionasidefooterfigurepicturetimevideo...

  7. 微信小程序学习笔记(阶段二)

    二阶段学习过程:   (一)看官方文档的框架、组件、API:https://mp.weixin.qq.com/ […]...

  8. 什么是HTML5?HTML5的含义、元素和好处

    在万维网的早期,主要的网络浏览器创造者(例如微软Internet Explorer和Mosaic Netscape)开发了特定于浏览器的元素,以增强其浏览器的网页外观。到上世纪90年代末,他们为Internet Explorer和Netscape创建了不同版本的网站。...

随机推荐

  1. SSE图像算法优化系列十七:多个图像处理中常用函数的SSE实现。

      在做图像处理的SSE优化时,也会经常遇到一些小的过程、数值优化等代码,本文分享一些个人收藏或实现的代码片段 […]...

  2. 域名注册备案为什么那么难

    信部规定,如果想使用中国境内的服务器建站,必须将网站域名进行备案。理论上说,域名备案制度可以在某种程度上减少违 […]...

  3. 安装vant2.2.7版本报错These dependencies were not found: vant/es/goods-action-big-btn in ./src/config/vant.config.js……

    一、问题 前天,在使用vant的checkbox复选框的时候,注意到新增加一个全选功能,通过 ref 可以获取 […]...

  4. Linux文件/目录权限及归属

    Linux文件/目录权限及归属 权限:读    写    执行 查看文件/目录权限及归属 设置文件/目录的权限 […]...

  5. 超详细实战教程丨多场景解析如何迁移Rancher Server

    走心万字长文!Step by Step,教你如何在Rancher单节点安装或高可用安装的情况下进行Ranche […]...

  6. Electron团队为什么要干掉remote模块

    Electron团队提供remote模块给开发者, 主要目的是为了简化渲染进程和主进程互访的难度, 这个目的却 […]...

  7. 藏在Java数组的背后,你可能忽略的知识点

    目录 引言 概念 区别于C/C++数组 区别于容器 数组特性 随机访问 Java数组与内存 解惑 数组的本质 […]...

  8. Action的实现方式和struts.xml配置的详细解释,Struts2的简单执行过程(二)

    Action的实现方式和struts.xml配置的详细解释,Struts2的简单执行过程(二) 我把你的头像, […]...

展开目录

目录导航