基于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变量作用域使用中常见错误总结
Mar 26 Javascript
使用javascipt---实现二分查找法
Apr 10 Javascript
node.js中使用socket.io的方法
Dec 15 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
纯Javascript实现ping功能的方法
Mar 20 Javascript
jQuery复制表单元素附源码分享效果演示
Sep 30 Javascript
javascript瀑布流布局实现方法详解
Feb 17 Javascript
Javascript类型转换的规则实例解析
Feb 23 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
Jul 22 Javascript
jQuery利用sort对DOM元素进行排序操作
Nov 07 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
vue-infinite-loading2.0 中文文档详解
Apr 08 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 方便水印和缩略图的图形类
2009/05/21 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
Python SQLite3数据库操作类分享
2014/06/10 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python扩展内置类型详解
2018/03/26 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
一套软件测试笔试题
2014/07/25 面试题
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
模具毕业生推荐信
2014/02/15 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
保姆聘用合同
2015/09/21 职场文书