【CSS】环形进度条

匿名 (未验证) 提交于 2019-12-02 20:32:16

效果图

原理剖析

1.先完成这样一个半圆(这个很简单吧)

2.overflow: hidden;

3.在中间定位一个白色的圆形做遮挡

4.完成另一半

5.使用animate配合时间完成衔接

源码

<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>环形进度条</title>     <style>         .wrapper {             position: absolute;             top: 0;             right: 0;             bottom: 0;             left: 0;             width: 4em;             height: 4em;             margin: auto;         }         .container {             position: absolute;             top: 0;             bottom: 0;             width: 2em;             overflow: hidden;         }         .halfCir {             width: 2em;             height: 4em;             background: red;         }         .container1 {             left: 2em;         }         .container1 .halfCir {             left: 0;             border-radius: 0 4em 4em 0;             transform-origin: 0 50%;             animation: halfCir1 4s infinite linear;                     }         .container2 {             left: 0;         }         .container2 .halfCir {             border-radius: 4em 0 0 4em;             transform-origin: 2em 2em;             animation: halfCir2 4s infinite linear;         }         @keyframes halfCir1 {             50%, 100% {                 transform: rotateZ(180deg);             }         }         @keyframes halfCir2 {             0%, 50% {                 transform: rotateZ(0);             }             100% {                 transform: rotateZ(180deg);             }         }         .wrapper::after {             position: absolute;             top: 0.5em;             left: 0.5em;             width: 3em;             height: 3em;             background: #fff;             border-radius: 50%;             content: "";             }         .cir {             position: absolute;             top: 0;             right: 0;             left: 0;             width: 0.5em;             height: 0.5em;             margin: auto;             background: red;             border-radius: 50%;         }         .cir2 {             transform-origin: 50% 2em;             animation: cir2 4s infinite linear;         }         @keyframes cir2 {             100% {                 transform: rotateZ(360deg);             }         }     </style> </head> <body>     <div class="wrapper">          <div class="container container1">              <div class="halfCir"></div>          </div>          <div class="container container2">              <div class="halfCir"></div>          </div>         <div class="cir cir1"></div>          <div class="cir cir2"></div>     </div> </body> </html>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!