实现圆形进度条旋转效果

圆形进度条效果在APP中很常见的,例如在我们下载时的圆形进度条,清除效果进度条。 下面我来介绍一个简单的圆形进度条效果是怎么实现的

首先,创建一个大小自定义的div模块为外层,其下再创建布局两个div左右布局,在这两个div下分别存在子div,html样式:

  <div class="box">
            <div class="circle left">
                <div class='circleleft' > </div>
            </div>
            <div class="circle right">
                <div class='circleright'></div>
            </div>
        </div>

其次设置div样式:这主讲要点

  • 布局父div大小相等左右布局,大小是是外层div的大小的一般1,并且设置多出隐藏
  • 两个内部子元素设置大小为外层div大小,的圆形;
  • 上两步的到两个半圆旋转到竖立再将右边半圆移动拼接成圆
  • 实现圆形旋转,加动画效果,分别给两个圆添加

下面是完整代码:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    *{
        margin: 0;
        padding: 0;
        list-style: none;
        box-sizing: border-box;
    }
    .box{
        width: 400px;
        height: 400px;
        border: 1px solid black;
        position: relative;
        
    }
    .circle{
        width: 200px;
        height: 400px;
        border: 1px solid transparent;
        position:absolute;
        overflow: hidden;
    }
    .left{
        left: 0;
    }
    .right{
    right: 0;
    
    }
    .circleleft{
        width: 400px;
        height: 400px;
        border: 20px solid transparent;
        position:absolute;
        border-bottom:20px solid red;
        border-left:20px solid red ;
        border-radius: 50%;
        transform:rotate(45deg);
        animation: move1 5s infinite linear;
       
        
    }
    .circleright{
        
        width: 400px;
        height: 400px;
        border: 20px solid transparent;
         position:absolute;
        border-top:20px solid red;
    border-right:20px solid red;
    border-radius: 50%;
    right:0; 
    transform:rotate(45deg);
    animation: move 5s infinite linear;
    }
    @keyframes move{
       0%{
        transform:rotate(45deg)
    
       }
       50%,100%{
        transform:rotate(225deg)
       }
    }
    @keyframes move1{
        0%,50%{
        transform:rotate(45deg)
    
       }
       100%{
        transform:rotate(225deg)
       } 
    }
    </style>
</head>
<body>
    <div class="box">
        <div class="circle left">
            <div class='circleleft' > </div>
        </div>
        <div class="circle right">
            <div class='circleright'></div>
        </div>
    </div>

</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_44311876/article/details/88753092