Vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果
生活随笔
收集整理的這篇文章主要介紹了
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-circleposition: relativecirclestroke-width: 0.16remtransform-origin: center&.progress-backgroundtransform: scale(0.9)stroke: rgba(255, 205, 49, 0.5)&.progress-bartransform: 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>
需要像組件傳入的參數:
svg圈圈大小radius以及歌曲播放進度百分比percent,兩個數據來源:
解釋:
percent通過audio標簽的currentTime獲取,duration為接口獲取的當前歌曲總長度,相除則為當前進度百分比。
radius可根據自身開發時所需規格設置(其他布局、樣式之類的也是)
父組件樣式(本人使用stylus):
.controlposition absolutetop 0.35remright 1remcolor $color-theme-d.icon-minifont-size: 0.64remposition: absoluteleft: 0top: 0
最近可以變聽歌邊開發了.....
開發完并運用此組件,設置適當的布局、樣式后的效果:
總結
以上是生活随笔為你收集整理的Vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 饥荒烤炉怎么用
- 下一篇: 腾讯视频会员怎么取消(海量高清视频在线观