Home  >  Article  >  Web Front-end  >  Tutorial example of using CSS clip to implement audio playback ring progress bar

Tutorial example of using CSS clip to implement audio playback ring progress bar

零下一度
零下一度Original
2017-05-13 13:09:471957browse

I suddenly had the need to make a ring AudioPlaybackProgress bar (the effect in the picture above). I thought about it and tried for a long time, but it didn't come true. Finally, I checked my mother and found out that css also has a clip attribute, which perfectly meets the needs. Share it, maybe it can help other friends. As for whether it is useful, I don’t know, who cares! OK, stop talking, let's go!

CSS clip property

 Let's briefly understand the css clip property

Explanation

The clip property clips absolutely positioned elements. This property is used to define a clipping rectangle. For an absolutely defined element, only the content within the rectangle is visible. Content outside this clipping area will be processed according to the value of overflow.

shape Set the shape of the element. The only legal shape values ​​are: rect (top, right, bottom, left)

auto Default value. No clipping is applied.

inherit Specifies that the value of the clip attribute should be inherited from the parent element.

Using

The principle is actually: make a square p display only the right half through clipping, and then make a border in this p through clipping (the size of the border is the size of the progress bar) The left semicircle, because p only displays the right half, this semicircle is cropped and cannot be seen. Then combine rotate to rotate the semicircle to achieve a progress bar within 50%. When it exceeds 50%, cancel the clipping of p, and then use a semicircle to save 50% of the progress bar to achieve a 100% progress bar. Effect. Paste the code, and then explain the key code with comments.

/*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);
}

//javscript部分

Complete Demo, here I wrote an audioPlayPlugin.js, which simply encapsulates the common operations of audio tags. Github address, coding address

Finally, if there is anything I didn’t explain clearly or said wrongly, you are welcome to leave a message so that we can learn together and make progress together.

【Related Recommendations】

1. Special Recommendation:"php Programmer Toolbox" V0.1 version Download

2. Free css online video tutorial

3. php.cn Dugu Jiujian (2)-css video tutorial

The above is the detailed content of Tutorial example of using CSS clip to implement audio playback ring progress bar. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn