基于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中的作用域scope介绍
Dec 28 Javascript
JavaScript 实现类的多种方法实例
May 01 Javascript
JavaScript实现按Ctrl键打开新页面
Sep 04 Javascript
JS实现的通用表单验证插件完整实例
Aug 20 Javascript
JavaScript多图片上传案例
Sep 28 Javascript
Bootstrap每天必学之滚动监听
Mar 16 Javascript
js 将图片连接转换成base64格式的简单实例
Aug 10 Javascript
js使用generator函数同步执行ajax任务
Sep 05 Javascript
element ui里dialog关闭后清除验证条件方法
Feb 26 Javascript
Vue.js实现数据响应的方法
Aug 13 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 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中http_build_query 的一个问题
2012/03/25 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
PHP内核探索之变量
2015/12/22 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
搭建vue开发环境
2018/07/19 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Python3处理文件中每个词的方法
2015/05/22 Python
详解Python的Django框架中的中间件
2015/07/24 Python
详解Python编程中包的概念与管理
2015/10/16 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
python删除不需要的python文件方法
2018/04/24 Python
python实现定时提取实时日志程序
2018/06/22 Python
python将txt文件读取为字典的示例
2018/12/22 Python
使用python实现简单五子棋游戏
2019/06/18 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
基本款天堂:Everlane
2017/05/13 全球购物
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
医院检讨书范文
2014/02/01 职场文书
四风问题自查报告剖析材料
2014/02/08 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
介绍信范文
2015/01/31 职场文书
计算机专业自荐信
2015/03/05 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
php中pcntl_fork详解
2021/04/01 PHP
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python