


Implementation principle of CSS3 circular percentage progress bar_html/css_WEB-ITnose
Original text http://ymblog.net/2015/06/20/css3 Implementation principle of circular percentage progress bar/
When I woke up this morning and checked out the jquery plug-in mechanism, I accidentally clicked on the article related to the css3 circular percentage progress bar, so I got out of hand and started to mess around. . .
Regarding the realization of a circular circle, it can be achieved by using two divs with the same center and different radii. The color of the big circle is the background color of the circular progress bar, and the color of the small circle is the mask color white of the middle percentage, plus a semicircle on the left and right sides, which means there should be a total of 4 divs and a big circle. The div contains 3 divs, half a circle on the left and right sides, and the mask div is at the top.
How to realize half a circle on one side here? Using the clip attribute of CSS, you can cut the image and display only half of it, which will be introduced in detail later.
This kind of implementation effect is actually possible (when the percentage does not exceed 50%). When it exceeds, you will find that, for example, it is 60%, but the progress bar shows 40%. Why? Woolen cloth? Because the divs that rotate left and right are not covered, they should be hidden if they exceed their respective ranges, otherwise the excess parts will also be displayed. As shown in the picture, it is normal when it is 40%, and it is the same when it is 60%.
Then do we need two additional divs to cover it? Let’s look at the html code
<div class="circle"><div class="pie_left"><div class="left"></div></div><div class="pie_right"><div class="right"></div></div><div class="mask"><span>10</span>%</div></div>
style:
.circle {width: 200px;height: 200px;position: absolute;border-radius: 50%;background: #0cc;}.left,.right{width:200px;height:200px;position: absolute;top: 0px;left: 0px;}.pie_left, .pie_right{width:200px;height:200px;position: absolute;border-radius: 50%;top: 0px;left: 0px;background: red;}.pie_right,.right {clip:rect(0,auto,auto,100px);}.pie_left , .left{clip:rect(0,100px,auto,0);}/**当top和left取值为auto时,相当于0*当bottom和right取值为auto时,相当于100%*/.mask {width: 150px;height: 150px;border-radius: 50%;left: 25px;top: 25px;/*background: #FFF;*/position: absolute;text-align: center;line-height: 150px;font-size: 16px;}
The js code here is relatively simple, and you only need to make a little judgment:
$(function(){if( $('.mask span').text() <= 50 ){$('.pie_right').css('transform','rotate('+($('.mask span').text()*3.6)+'deg)');}else{$('.pie_right').css('transform','rotate(180deg)');$('.pie_left').css('transform','rotate('+(($('.mask span').text()-50)*3.6)+'deg)');}})
Explanation: Because 100% corresponds to 360 degrees, then 50% corresponds to 180 degrees, 1/3.6 degrees.
Let’s introduce the Clip attribute
The most commonly used clip is rect(). Please see this article for details. The compatibility of clip is also good and it is compatible with basic browsers.
clip usage
is only effective for an element whose attribute is set to position:absolute; or position:fixed;.
clip:rect(top,right,bottom,left);
In IE6`7, just remove the comma between the attributes.
The right and bottom values here are relative to left and top. The pixels contained in the selected area will be displayed, and the others will be hidden.
What if bottom is smaller than top and right is smaller than left? Then the entire picture will be hidden.
It is also important to note that
You need to carefully understand here that the combined right and bottom values are relative to left and top. This should be easier to understand.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

HTML is suitable for beginners because it is simple and easy to learn and can quickly see results. 1) The learning curve of HTML is smooth and easy to get started. 2) Just master the basic tags to start creating web pages. 3) High flexibility and can be used in combination with CSS and JavaScript. 4) Rich learning resources and modern tools support the learning process.

HTML defines the web structure, CSS is responsible for style and layout, and JavaScript gives dynamic interaction. The three perform their duties in web development and jointly build a colorful website.

WebdevelopmentreliesonHTML,CSS,andJavaScript:1)HTMLstructurescontent,2)CSSstylesit,and3)JavaScriptaddsinteractivity,formingthebasisofmodernwebexperiences.

AnexampleofastartingtaginHTMLis,whichbeginsaparagraph.StartingtagsareessentialinHTMLastheyinitiateelements,definetheirtypes,andarecrucialforstructuringwebpagesandconstructingtheDOM.

GiteePages static website deployment failed: 404 error troubleshooting and resolution when using Gitee...

To achieve the effect of scattering and enlarging the surrounding images after clicking on the image, many web designs need to achieve an interactive effect: click on a certain image to make the surrounding...

The Y-axis position adaptive algorithm for web annotation function This article will explore how to implement annotation functions similar to Word documents, especially how to deal with the interval between annotations...

HTML, CSS and JavaScript are the three pillars of web development. 1. HTML defines the web page structure and uses tags such as, etc. 2. CSS controls the web page style, using selectors and attributes such as color, font-size, etc. 3. JavaScript realizes dynamic effects and interaction, through event monitoring and DOM operations.
