大家好,我是 Just,这里是「设计师工作日常」,今天分享的是用纯css实现多双弧线加载动画。
《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。
目录
- 整体效果
- 核心代码
- html 代码
- css 部分代码
- 完整代码如下
- html 页面
- css 样式
- 页面渲染效果
整体效果
知识点:
①熟悉:before
、:after
伪选择器的使用
②熟悉animation
动画属性
③通过border
来绘制双弧线
思路:先写出主体双弧线,然后通过
:before
和:after
来添加新的双弧线,然后设置不同的animation
属性来让双弧线动起来。
核心代码部分,简要说明了写法思路;完整代码在最后,可直接复制到本地运行。
核心代码
html 代码
<div class="loading42"></div>
div
标签作为主体双弧线。
css 部分代码
.loading42{width:40px;height:40px;border:6px solid rgba(0,0,0,0);border-top-color: #b12a5b;border-bottom-color: #b12a5b;border-radius:50%;position: relative;animation: eff42 1.4s linear infinite; /*设置主体动画参数*/
}
.loading42:after{content: '';width:60px;height:60px;border:6px solid rgba(0,0,0,0);border-top-color: #ff8177;border-bottom-color: #ff8177;border-radius:50%;position: absolute;top: -16px;left: -16px;animation: inherit;animation-duration: 0.7s; /*设置动画持续时间*/animation-direction: reverse; /*设置动画反向*/
}
.loading42:before{content: '';width:20px;height:20px;border:6px solid rgba(0,0,0,0);border-top-color: #ff8177;border-bottom-color: #ff8177;border-radius:50%;position: absolute;top: 4px;left: 4px;animation: inherit;animation-duration: 0.7s; /*设置动画持续时间*/animation-direction: reverse; /*设置动画反向*/
}
@keyframes eff42{to{transform: rotate(360deg);}
}
1、页面中
div
作为主体,通过border
属性绘制出主体双弧线,并且给它设置animation
动画属性相关参数
2、然后基于主体双弧线通过
:before
和:after
新增两个新的双弧线,设置不同的宽度、高度以及边框颜色,通过定位让三个双弧线居中分布
3、然后给两个伪选择器
:before
和:after
设置动画时长(animation-duration
属性 )以及动画反向(animation-direction
属性 )。
完整代码如下
html 页面
<!DOCTYPE html>
<html lang="zh"><head><meta charset="utf-8"><link rel="stylesheet" href="style.css"><title>多弧形加载动画</title></head><body><div class="app"><div class="loading42"></div></div></body>
</html>
css 样式
/** style.css **/
.app{width: 100%;height: 100vh;background-color: #ffffff;position: relative;display: flex;justify-content: center;align-items: center;
}
.loading42{width:40px;height:40px;border:6px solid rgba(0,0,0,0);border-top-color: #b12a5b;border-bottom-color: #b12a5b;border-radius:50%;position: relative;animation: eff42 1.4s linear infinite;
}
.loading42:after{content: '';width:60px;height:60px;border:6px solid rgba(0,0,0,0);border-top-color: #ff8177;border-bottom-color: #ff8177;border-radius:50%;position: absolute;top: -16px;left: -16px;animation: inherit;animation-duration: 0.7s;animation-direction: reverse;
}
.loading42:before{content: '';width:20px;height:20px;border:6px solid rgba(0,0,0,0);border-top-color: #ff8177;border-bottom-color: #ff8177;border-radius:50%;position: absolute;top: 4px;left: 4px;animation: inherit;animation-duration: 0.7s;animation-direction: reverse;
}
@keyframes eff42{to{transform: rotate(360deg);}
}
页面渲染效果
以上就是所有代码,以及简单的思路,希望对你有一些帮助或者启发。
[1] 原文阅读
CSS 是一种很酷很有趣的计算机语言,在这里跟大家分享一些 CSS 实例 Demo,为学习者获取灵感和思路提供一点帮助,希望你们喜欢。
我是 Just,这里是「设计师工作日常」,求点赞求关注!