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
DDDOriginal
2024-12-16 22:35:10315browse

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

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>

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!

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