vue2.0+SVG实现音乐播放圆形进度条组件


Posted in Javascript onSeptember 21, 2019

vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果

vue2.0+SVG实现音乐播放圆形进度条组件

需求分析:

类似于大多数音乐播放器中等mini播放器控制按钮,显示播放进度,实时更新进度。

progress-circle.vue源码:

<template>
 <div class="progress-circle">
 <svg :width="radius" :height="radius" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <circle class="progress-background" r="50" cx="50" cy="50" fill="transparent"/>
  <circle class="progress-bar" r="50" cx="50" cy="50" fill="transparent" :stroke-dasharray="dashArray"
    :stroke-dashoffset="dashOffset"/>
 </svg>
 <slot></slot>
 </div>
</template>
 
<script type="text/ecmascript-6">
 export default {
 props: {
  radius: {
  type: String,
  default: '0.32rem'
  },
  percent: {
  type: Number,
  default: 0
  }
 },
 data() {
  return {
  dashArray: Math.PI * 100
  }
 },
 computed: {
  dashOffset() {
  return (1 - this.percent) * this.dashArray
  }
 }
 }
</script>
 
<style scoped lang="stylus" rel="stylesheet/stylus">
 .progress-circle
 position: relative
 circle
  stroke-width: 0.16rem
  transform-origin: center
  &.progress-background
  transform: scale(0.9)
  stroke: rgba(255, 205, 49, 0.5)
  &.progress-bar
  transform: scale(0.9) rotate(-90deg)
  stroke: #ffcd32
</style>

本组件没有使用本地资源,可直接只用,在父组件中导入并注册后,调用组件。
父组件DOM结构:

<div class="control">
 <progress-circle :radius="radius" :percent="percent">
  <i @click.stop="togglePlaying" class="icon-mini" :class="iconMiniPlay"></i>
 </progress-circle>
</div>

解释:其中<i></i>中引用的是制作的css图标(播放/暂停按钮),通过iconMiniPlay决定展现是播放按钮还是暂停按钮(本例子只介绍原型进图条组件的开发和使用,因此不多介绍),设置图标的大小务必注意与radius一致,不明白为什么的话建议尝试一下,实践出真知噢。

需要像组件传入的参数:

svg圈圈大小radius以及歌曲播放进度百分比percent,两个数据来源:

vue2.0+SVG实现音乐播放圆形进度条组件

解释:

percent通过audio标签的currentTime获取,duration为接口获取的当前歌曲总长度,相除则为当前进度百分比。

radius可根据自身开发时所需规格设置(其他布局、样式之类的也是)

父组件样式(本人使用stylus):

.control
 position absolute
 top 0.35rem
 right 1rem
 color $color-theme-d
 .icon-mini
 font-size: 0.64rem
 position: absolute
 left: 0
 top: 0

最近可以变听歌边开发了。

开发完并运用此组件,设置适当的布局、样式后的效果:

vue2.0+SVG实现音乐播放圆形进度条组件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript与C# Windows应用程序交互方法
Jun 29 Javascript
JavaScript面象对象设计
Apr 28 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
JQuery给元素绑定click事件多次执行的解决方法
May 29 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
Apr 28 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
微信小程序使用wxParse解析html的方法示例
Jan 17 Javascript
ES6知识点整理之对象解构赋值应用示例
Apr 17 Javascript
Servlet返回的数据js解析2种方法
Dec 12 Javascript
js+springMVC 提交数组数据到后台的实例
Sep 21 #Javascript
jquery弹窗时禁止body滚动条滚动的例子
Sep 21 #jQuery
vue实现文件上传读取及下载功能
Nov 17 #Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
Sep 21 #Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 #Javascript
Vue使用NProgress进度条的方法
Sep 21 #Javascript
NProgress显示顶部进度条效果及使用详解
Sep 21 #Javascript
You might like
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
JavaScript cookie原理及使用实例
2020/05/08 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
优秀大学生推荐信范文
2013/11/28 职场文书
《小池塘》教学反思
2014/02/28 职场文书
出生证明公证书
2014/04/09 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
Kubernetes控制节点的部署
2022/04/01 Servers
mysql 获取相邻数据项
2022/05/11 MySQL
mysql序号rownum行号实现方式
2022/12/24 MySQL