基于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 相关文章推荐
纯JAVASCRIPT图表动画插件Highcharts Examples
Apr 16 Javascript
js计算两个时间之间天数差的实例代码
Nov 19 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
Feb 13 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
jQuery siblings()用法实例详解
Apr 26 Javascript
JS onkeypress兼容性写法详解
Apr 27 Javascript
jsp 自动编译机制详细介绍
Dec 01 Javascript
jQuery自定义元素右键点击事件(实现案例)
Apr 28 jQuery
使用vue-router为每个路由配置各自的title
Jul 30 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
Oct 02 Javascript
node(koa2) web应用模块介绍详解
Mar 29 Javascript
javascript实现固定侧边栏
Feb 09 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
js获取域名的方法
2015/01/27 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
python+Django+apache的配置方法详解
2016/06/01 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
Django ORM多对多查询方法(自定义第三张表&amp;ManyToManyField)
2019/08/09 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
Python插件机制实现详解
2020/05/04 Python
Python dict的常用方法示例代码
2020/06/23 Python
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
平面设计师的工作职责
2013/11/21 职场文书
通信研究生自荐信
2014/02/01 职场文书
手机银行营销方案
2014/03/14 职场文书
团日活动总结怎么写
2014/06/25 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
社团个人总结范文
2015/03/05 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
三好学生竞选稿
2015/11/21 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers