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 相关文章推荐
jquery 简单的进度条实现代码
Mar 11 Javascript
Javascript 面向对象 重载
May 13 Javascript
如何确保JavaScript的执行顺序 之实战篇
Mar 03 Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
再谈javascript常见错误及解决方法
Sep 16 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 Javascript
JavaScript简单实现合并两个Json对象的方法示例
Oct 16 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
Feb 02 Javascript
微信小程序实现换肤功能
Mar 14 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 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
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
2018/02/28 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
理解python正则表达式
2016/01/15 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
django静态文件加载的方法
2018/05/20 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
面试后的感谢信范文
2014/02/01 职场文书
员工安全责任书范本
2014/07/24 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
基于Python实现射击小游戏的制作
2022/04/06 Python
Mysql开启外网访问
2022/05/15 MySQL