最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

利用CSSclip实现音频播放圆环进度条教程实例

来源:懂视网 责编:小采 时间:2020-11-27 18:51:43
文档

利用CSSclip实现音频播放圆环进度条教程实例

利用CSSclip实现音频播放圆环进度条教程实例:突然有需求要做一个圆环的音频播放进度条(上图效果),自己琢磨尝试了半天,也没有实现。最后度娘一下,才知道css还有一个clip属性,完美实现需求。分享一下,说不定能帮其它小伙伴。至于有没有用,那就不知道了,who care!OK,费话打住,Let'
推荐度:
导读利用CSSclip实现音频播放圆环进度条教程实例:突然有需求要做一个圆环的音频播放进度条(上图效果),自己琢磨尝试了半天,也没有实现。最后度娘一下,才知道css还有一个clip属性,完美实现需求。分享一下,说不定能帮其它小伙伴。至于有没有用,那就不知道了,who care!OK,费话打住,Let'

?突然有需求要做一个圆环的音频播放进度条(上图效果),自己琢磨尝试了半天,也没有实现。最后度娘一下,才知道css还有一个clip属性,完美实现需求。分享一下,说不定能帮其它小伙伴。至于有没有用,那就不知道了,who care!OK,费话打住,Let's go!

CSS clip 属性

??先简单了解一下css clip属性

说明

clip 属性剪裁绝对定位元素。这个属性用于定义一个剪裁矩形。对于一个绝对定义元素,在这个矩形内的内容才可见。出了这个剪裁区域的内容会根据 overflow 的值来处理。

shape 设置元素的形状。唯一合法的形状值是:rect (top, right, bottom, left)

auto 默认值。不应用任何剪裁。

inherit 规定应该从父元素继承 clip 属性的值。

使用

??其实原理就是:通过剪裁使一个正方形p只显示右半部分,再通过剪裁在这个p里做一个带边框(边框大小就是进度条的大小)的左半圆,因为p只显示右半部分,正好将这个半圆剪裁掉了也就看不到了。然后结合rotate让这个半圆旋转,就实现了50%内的进度条,当超过50%时,取消对p的剪裁,再使用一个半圆来保存50%的进条,就实现一个100%的进度条效果。贴上代码,然后再对关键代码用注释解释。

/*Css部分*/
.circleProgress_wrapper{/*设置圆环的大小*/
 margin: auto;
 width: 200px;
 height: 200px;
 border-radius: 50%;
 cursor: pointer;
}
.slice{ /*这是一个裁去了左半部分,只显示右半部分的p*/
 position: absolute; /*必须是绝对定位元素,clip属性才会有效*/
 width: 100%;
 height: 100%;
 clip:rect(0,200px,200px,100px);/*top:0,right:200,bottom:200,left:100裁剪出右半部*/
}
.slice.gt50{/*当进度超过50%时,取消剪裁*/
 clip:rect(auto,auto,auto,auto);
}
.bar,.fill{ /*两个只显示左半部分的半圆*/
 position: absolute;
 box-sizing: border-box;
 width: 100%;
 height: 100%;
 border: 4px rgba(255, 249, 0, 0.77) solid;/*设置进度条大小和颜色值*/
 border-radius: 50%;
 clip: rect(0,100px,200px,0);/*top:0,right:100,bottom:200,left:0裁剪出左半部*/
}
.slice.gt50 .fill{/*当进度超过50%时,让fill旋转180度填充50%*/
 trans
for
m: rotate(180deg);
}
<!--html 部分 -->
<p class="circleProgress_wrapper">
 <p id="slice_wrapper" class="slice"> 
 <p class="bar pre50"></p>
 <p class="fill"></p>
 </p>
</p>
//javscript部分
<script type="text/
javascript
" src="src/audioPlayPlugin.
js
"></script>
<script>
var bar=
document
.querySelector(".slice>.bar"),
 process=0,
 circleProgress=document.querySelector(".circleProgress_wrapper"),
 slice=document.getElementById("slice_wrapper");
var audio=
new
 audioController({ //创建一个音频
对象
 src:"
file
/test1.mp3",
 "
time
up
date
":function(){//监听timeupdate
事件
,也就是音频当前播放进度发生改变响应的事件
 /*
 *audio.getAttr("
current
Time" 获取当前播放的时间 s
 *audio.getAttr("duration") 获取音频时长
 *它们的比正好就是当前播放进度
 *再乘以360转换为进度条应该旋转的角度
 */
 process=audio.getAttr("currentTime")/audio.getAttr("duration")*360;
 parseInt(process)===180&&add
Class
(slice,"gt50");//当等于50%时,使用fill占满50%的进度条
 bar.style="transform:rotate("+(process)+"deg)";//根据播放进度设置
更新
进度条
 }
 }
 });
circleProgress.addEvent
List
ener("click",function(){ //点击播放
 if(audio.getAttr("paused")){ 
 audio.play()
 }
else
{
 audio.pause()
 }
 });
 function addClass(element,className){/*添加类名,完整代码已省略*/
 ...
 }
</script>

完整的Demo,这里用了我写一个audioPlayPlugin.js,对audio标签的常用操作进行了一些简单的封装。github地址,coding地址

最后,有啥我没说清楚或者说错了的,欢迎大家留言,大家一起学习,共同进步么。

【相关推荐】

1. 特别推荐:“php程序员工具箱”V0.1版本下载

2. 免费css在线视频教程

3. php.cn独孤九贱(2)-css视频教程

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

利用CSSclip实现音频播放圆环进度条教程实例

利用CSSclip实现音频播放圆环进度条教程实例:突然有需求要做一个圆环的音频播放进度条(上图效果),自己琢磨尝试了半天,也没有实现。最后度娘一下,才知道css还有一个clip属性,完美实现需求。分享一下,说不定能帮其它小伙伴。至于有没有用,那就不知道了,who care!OK,费话打住,Let'
推荐度:
标签: 示例 css 圆环
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top