基于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输出列表实现代码
Sep 12 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
Mar 21 Javascript
JavaScript中的eval()函数使用介绍
Dec 31 Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 Javascript
jQuery团购倒计时特效实现方法
May 07 Javascript
javascript实现数组去重的多种方法
Mar 14 Javascript
通过javascript进行UTF-8编码的实现方法
Jun 27 Javascript
jQuery自定义组件(导入组件)
Nov 08 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
Sep 19 jQuery
layerUI下的绑定事件实例代码
Aug 17 Javascript
Vue中全局变量的定义和使用
Jun 05 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
2019十大人气国漫
2020/03/13 国漫
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
jstree中的checkbox默认选中和隐藏示例代码
2019/12/29 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
详细探究Python中的字典容器
2015/04/14 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
python K近邻算法的kd树实现
2018/09/06 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
django使用graphql的实例
2020/09/02 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
代办委托书怎样写
2014/04/08 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
重阳节简报
2015/07/20 职场文书
公司员工奖惩制度
2015/08/04 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python