基于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 相关文章推荐
alixixi runcode.asp的代码不错的应用
Aug 08 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
Apr 30 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
javascript框架设计之框架分类及主要功能
Jun 23 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
Jan 03 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
Jan 21 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
js正则表达式简单校验方法
Jan 03 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 csv操作类代码
2009/12/14 PHP
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
python的urllib模块显示下载进度示例
2014/01/17 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
python基础 range的用法解析
2019/08/23 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
django跳转页面传参的实现
2020/09/17 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
列车长先进事迹材料
2014/01/25 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis