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中匿名函数,函数直接量和闭包
May 08 Javascript
javascript:void(0)的真正含义实例分析
Aug 20 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
Jul 08 Javascript
纯Javascript实现ping功能的方法
Mar 20 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
JavaScript中String.prototype用法实例
May 20 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
Oct 18 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
Dec 19 Javascript
使用webpack-dev-server处理跨域请求的方法
Apr 18 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 Javascript
JavaScript实现随机点名程序
Mar 25 Javascript
jQuery实现简单评论功能
Aug 19 jQuery
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无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
JavaScript脚本性能的优化方法
2007/02/02 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
2019/01/09 jQuery
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
迟到早退检讨书
2014/02/10 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
高中军训第一天感言
2014/03/06 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
放弃继承权公证书
2015/01/23 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
学生会部长竞选稿
2015/11/19 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL