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实现的类似购物商城的购物车
Dec 06 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
Feb 26 Javascript
js函数中onmousedown和onclick的区别和联系探讨
May 19 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
Jun 06 Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 Javascript
JS表格组件神器bootstrap table详解(强化版)
May 26 Javascript
javascript基础知识
Jun 07 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
Jun 13 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
基于BootStrap实现简洁注册界面
Jul 20 Javascript
代码详解JS操作剪贴板
Feb 11 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
Jul 02 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异步多线程swoole用法实例
2014/11/14 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
PHP7 其他修改
2021/03/09 PHP
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
JS 自执行函数原理及用法
2019/08/05 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
python list转dict示例分享
2014/01/28 Python
python判断自身是否正在运行的方法
2019/08/08 Python
Python 线程池用法简单示例
2019/10/02 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
创建文明学校实施方案
2014/03/11 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
七夕情人节问候语
2015/11/11 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫