Home > Web Front-end > CSS Tutorial > How to Create a CSS Progress Circle that Stops at Specific Percentages?

How to Create a CSS Progress Circle that Stops at Specific Percentages?

DDD
Release: 2024-12-16 22:35:10
Original
313 people have browsed it

How to Create a CSS Progress Circle that Stops at Specific Percentages?

CSS Progress Circle with Partial Completion Indication

Introduction:

Circular progress bars are a common UI element used to indicate progress or completion status. However, many CSS progress bars display full animations that reach 100%. This article demonstrates how to create a CSS progress circle that can stop at specific percentages, as seen in the screenshot below:

[Screenshot of circular progress bars with partial completion]

Solution:

To achieve this, we utilize CSS clipping and animations. The clip property is used to hide a portion of the progress circle, while the animation property defines the rotation of the circle.

CSS Code:

.wrapper {
  width: 100px;
  height: 100px;
  position: absolute;
  clip: rect(0px, 100px, 100px, 50px);
}

.circle {
  width: 80px;
  height: 80px;
  border: 10px solid green;
  border-radius: 50px;
  position: absolute;
  clip: rect(0px, 50px, 100px, 0px);
}

div[data-anim~=base] {
  -webkit-animation-iteration-count: 1; 
  -webkit-animation-fill-mode: forwards; 
  -webkit-animation-timing-function:linear; 
}

.wrapper[data-anim~=wrapper] {
  -webkit-animation-duration: 0.01s; 
  -webkit-animation-delay: 3s; 
  -webkit-animation-name: close-wrapper; 
}

.circle[data-anim~=left] {
  -webkit-animation-duration: 6s; 
  -webkit-animation-name: left-spin;
}

.circle[data-anim~=right] {
  -webkit-animation-duration: 3s; 
  -webkit-animation-name: right-spin;
}

@-webkit-keyframes right-spin {
  from {
    -webkit-transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(180deg);
  }
}

@-webkit-keyframes left-spin {
  from {
    -webkit-transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(360deg);
  }
}

@-webkit-keyframes close-wrapper {
  to {
    clip: rect(auto, auto, auto, auto);
  }
}
Copy after login

HTML Code:

<div class="wrapper" data-anim="base wrapper">
  <div class="circle" data-anim="base left"></div>
  <div class="circle" data-anim="base right"></div>
</div>
Copy after login

This solution ensures that the progress circle animates smoothly, with the ability to pause at specific percentages, as desired.

The above is the detailed content of How to Create a CSS Progress Circle that Stops at Specific Percentages?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template