基于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 Date概念详细介绍
Nov 22 Javascript
js确认删除对话框效果的示例代码
Feb 20 Javascript
javascript中通过arguments参数伪装方法重载
Oct 08 Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 Javascript
Bootstrap中表单控件状态(验证状态)
Aug 04 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
Aug 20 Javascript
jquery实现图片切换代码
Oct 13 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
Jul 02 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 Javascript
element-ui中Table表格省市区合并单元格的方法实现
Aug 07 Javascript
JavaScript将数组转换为链表的方法
Feb 16 Javascript
vue 给数组添加新对象并赋值
Apr 20 Vue.js
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 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php array_walk() 数组函数
2011/07/12 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
在Python中操作列表之List.pop()方法的使用
2015/05/21 Python
Python控制多进程与多线程并发数总结
2016/10/26 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
python如何实现异步调用函数执行
2019/07/08 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
python二维图制作的实例代码
2020/12/03 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
保护环境建议书100字
2014/05/13 职场文书
环保口号大全
2014/06/12 职场文书
教师演讲稿开场白
2014/08/25 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
会议通知
2015/04/15 职场文书