HTML+CSS制作旋转的loading效果

HTML+CSS制作旋转的loading效果
效果图如下:
在这里插入图片描述
HTML部分源代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML+CSS制作旋转的loading效果</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="loader">
        <span>loading...</span>
    </div>
</body>

</html>

CSS部分源代码如下:

:root {
    
    
    --background-color: #2c3e50;
    --border-color: #7591AD;
    --text-color: #34495e;
    --color1: #EC3E27;
    --color2: #fd79a8;
    --color3: #0984e3;
    --color4: #00b894;
    --color5: #fdcb6e;
    --color6: #e056fd;
    --color7: #F97F51;
    --color8: #BDC581;
}

* {
    
    
    margin: 0;
    padding: 0;
}

html {
    
    
    font-size: 14px;
    box-sizing: border-box;
}

body {
    
    
    width: 100vw;
    height: 100vh;
    background-color: var(--background-color);
    display: flex;
    justify-content: center;
    align-items: center;
    font-family: 'Montserrat', sans-serif, Arial, 'Microsoft Yahei';
}

.loader {
    
    
    position: relative;
    width: 100px;
    height: 100px;
    color: #fff;
    /* 圆角形成圆形 */
    border-radius: 50%;
    /* 实现顶部圆弧 */
    border-top: 5px solid var(--color2);
    /* 解决loading转动时上下浮动问题
    主要原因是旋转的不是一个圆形,上方多了边框
    下方也增加边框让形状成为一个对称,转动时就不会浮动了
    如果使用box-sizing: border-box;应该也可以解决。
    好像不行,回头在研究,原理就是让旋转的元素成为一个对称的形状即可。
    */
    border-bottom: 5px solid transparent;
    /* background-color: turquoise; */
    /* 内容左右、上下居中 */
    display: flex;
    justify-content: center;
    align-items: center;
    /* 增加动画 */
    animation: animate .5s linear infinite;
}

.loader::after, .loader::before {
    
    
    position: absolute;
    content: "";
    width: 100%;
    height: 100%;
    left: 0;
    top: -5px;
    border-radius: 50%;
    border-bottom: 5px solid transparent;
    /* background-color: wheat; */
}

.loader::after {
    
    
    /* 实现顶部圆弧 */
    border-top: 5px solid var(--color3);
    /* 旋转3分之一圈 */
    transform: rotate(120deg);
}

.loader::before {
    
    
    /* 实现顶部圆弧 */
    border-top: 5px solid var(--color6);
    /* 旋转3分之一圈 */
    transform: rotate(-120deg);
}

/* 创建动画关键帧,实现旋转 */

@keyframes animate {
    
    
    0% {
    
    
        transform: rotate(0deg);
    }
    100% {
    
    
        transform: rotate(360deg);
    }
}

.loader span{
    
    
    /* reverse的作用:还是同一个动画但是动画的方向是反着的 */
    animation: animate .5s linear infinite reverse;
}

猜你喜欢

转载自blog.csdn.net/m0_46374969/article/details/111835275