基于vue-element组件实现音乐播放器功能


Posted in Javascript onMay 06, 2018

最近在写一个基于 github-page 和 gist 的博客, 想加个音乐播放器, 做了一个早上, 发出来分享一下

演示地址 https://github-laziji.github.io

效果

基于vue-element组件实现音乐播放器功能

使用到的组件

element组件

  • 布局 Layout
  • 按钮 Button
  • 滑块 Slider
  • 进度条 Progress
  • 弹出框 Popover

html5组件

audio

实现代码

更详细的实现可以看 https://github.com/GitHub-Laziji/vblog

<template>
  <div>
  <el-row>
   <el-col :span="4">
    <el-popover
    placement="top-start"
    trigger="hover">
     <div style="text-align: center">
      <el-progress 
      color="#67C23A"
      type="circle" 
      :percentage="music.volume"></el-progress><br>
      <el-button 
      @click="changeVolume(-10)"
      icon="el-icon-minus" 
      circle></el-button>
      <el-button 
      @click="changeVolume(10)"
      icon="el-icon-plus" 
      circle></el-button>
     </div>
     <el-button 
     @click="play"
     id="play"
     slot="reference"
     :icon="music.isPlay?'el-icon-refresh':'el-icon-caret-right'" 
     circle></el-button>
    </el-popover>
   </el-col>
   <el-col :span="14" style="padding-left: 20px">
    <el-slider
    @change="changeTime"
    :format-tooltip="formatTime"
    :max="music.maxTime"
    v-model="music.currentTime" 
    style="width: 100%;"></el-slider>
   </el-col>
   <el-col :span="6" style="padding: 9px 0px 0px 10px;color:#909399;font-size: 13px">
    {{formatTime(music.currentTime)}}/{{formatTime(music.maxTime)}}
   </el-col>
  </el-row>
  <audio ref="music" loop autoplay> 
   <source src="http://sc1.111ttt.cn:8282/2018/1/03m/13/396131232171.m4a?tflag=1519095601&pin=6cd414115fdb9a950d827487b16b5f97#.mp3" type="audio/mpeg">
  </audio>
 </div>
</template>
<script>
 export default{
  data(){
   return {
    music:{
     isPlay:false,
     currentTime:0,
     maxTime:0,
     volume:100
    }
   }
  },
  mounted(){
   this.$nextTick(()=>{
    setInterval(this.listenMusic,1000)
   })
  },
  methods:{
   listenMusic(){
    if(!this.$refs.music){
     return
    }
    if(this.$refs.music.readyState){
     this.music.maxTime = this.$refs.music.duration
    }
    this.music.isPlay=!this.$refs.music.paused
    this.music.currentTime = this.$refs.music.currentTime
   },
   play(){
    if(this.$refs.music.paused){
     this.$refs.music.play()
    }else{
     this.$refs.music.pause()
    }
    this.music.isPlay=!this.$refs.music.paused
    this.$nextTick(()=>{
     document.getElementById('play').blur()
    })
   },
   changeTime(time){
    this.$refs.music.currentTime = time
   },
   changeVolume(v){
    this.music.volume += v 
    if(this.music.volume>100){
     this.music.volume = 100
    }
    if(this.music.volume<0){
     this.music.volume = 0
    }
    this.$refs.music.volume = this.music.volume/100
   },
   formatTime(time){
    let it = parseInt(time)
    let m = parseInt(it/60)
    let s = parseInt(it%60)
    return (m<10?"0":"")+parseInt(it/60)+":"+(s<10?"0":"")+parseInt(it%60)
   }
  } 
 }
</script>

总结

以上所述是小编给大家介绍的基于vue-element组件实现音乐播放器功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
原生js拖拽(第一课 未兼容)拖拽思路
Mar 29 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
Nov 13 Javascript
window.print打印指定div实例代码
Dec 13 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
JavaScript获取网页支持表单字符集的方法
Apr 02 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
js利用clipboardData实现截屏粘贴功能
Oct 12 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
Dec 26 Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 Javascript
vue axios封装httpjs,接口公用配置拦截操作
Aug 11 Javascript
vue+canvas实现拼图小游戏
Sep 18 Javascript
VueJs组件之父子通讯的方式
May 06 #Javascript
vue自动化表单实例分析
May 06 #Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
May 06 #Javascript
JS中this的指向以及call、apply的作用
May 06 #Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
May 06 #Javascript
Less 安装及基本用法
May 05 #Javascript
es6新特性之 class 基本用法解析
May 05 #Javascript
You might like
php strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
php 字符串替换的方法
2012/01/10 PHP
基于php split()函数的用法详解
2013/06/05 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
关于.NET, HTML的五个问题
2012/08/29 面试题
大学毕业生的自我鉴定
2013/11/30 职场文书
精神病医院见习报告
2014/11/03 职场文书
手机销售员岗位职责
2015/04/11 职场文书
2016党员入党决心书
2015/09/22 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书