我们遇到加载, 要么是UI框架中自带, 要么就是百度, 然后CV到项目中?但是, 自己实现的时候, 又会没有思路 。 下面本篇文章就来给大家分享10个纯 CSS 实现的 Loading 效果, 希望对大家有所帮助!
文章插图
在推特上面看到 T. Afif 介绍的十个
Loading
效果 。 如上图 。 Yeah, 很赞哦, 挺实用的, 遂记录下来 。
为保证运行正常, 咱先规定下:
* { box-sizing: border-box;}1. 平滑加载
文章插图
<div class="progress-1"></div>.progress-1 { width:120px; height:20px; background: linear-gradient(#000 0 0) 0/0% no-repeat #ddd; animation:p1 2s infinite linear;}@keyframes p1 { 100% {background-size:100%}}
linear-gradient(#000 0 0)
你可以理解为 linear-gradient(#000 0 100%)
, 如果还不熟悉, 复制 linear-gradient(#000 0 50%, #f00 50% 0)
, 替换原先的部分跑一下 。 觉得 linear-gradient(#000 0 0)
别扭的话, 直接写 #000
即可 。 【推荐学习:css视频教程】 0/0%
是 background-position: 0;/background-size: 0;
的简写 。 文章插图
<div class="progress-2"></div>.progress-2 { width:120px; height:20px; border-radius: 20px; background: linear-gradient(orange 0 0) 0/0% no-repeat lightblue; animation:p2 2s infinite steps(10);}@keyframes p2 { 100% {background-size:110%}}
steps(10)
是 step(10, end)
的简写, 指明刚开始没有, 所以有第2点的处理 100% {background-size:110%}
添加多一个 step
的百分比, 上面的 step
是 10
, 所以是100% + (1/10)*100% = 110%
文章插图
<div class="progress-3"></div>.progress-3 { width:120px; height:20px; border-radius: 20px; background: repeating-linear-gradient(135deg,#f03355 0 10px,#ffa516 0 20px) 0/0% no-repeat, repeating-linear-gradient(135deg,#ddd 0 10px,#eee 0 20px) 0/100%; animation:p3 2s infinite;}@keyframes p3 { 100% {background-size:100%}}
repeating-linear-gradient(135deg,#ddd 0 10px,#eee 0 20px) 0/100%;
画出灰色的斑马线条纹, repeating-linear-gradient(135deg,#f03355 0 10px,#ffa516 0 20px) 0/0% no-repeat
则是进度条加载的条纹 。 4. 虚线加载
文章插图
<div class="progress-4"></div>.progress-4 { width:120px; height:20px; -webkit-mask:linear-gradient(90deg,#000 70%,#0000 0) 0/20%; background: linear-gradient(#000 0 0) 0/0% no-repeat #ddd; animation:p4 2s infinite steps(6);}@keyframes p4 { 100% {background-size:120%}}
-webkit-mask
默认有值 repeat
, 不然遮罩不会有五个 。 5. 电池加载
文章插图
<div class="progress-5"></div>.progress-5 { width:80px; height:40px; border:2px solid #000; padding:3px; background: repeating-linear-gradient(90deg,#000 0 10px,#0000 0 16px) 0/0% no-repeat content-box content-box; position: relative; animation:p5 2s infinite steps(6);}.progress-5::before { content:""; position: absolute; top: 50%; left:100%; transform: translateY(-50%); width:10px; height: 10px; border: 2px solid #000;}@keyframes p5 { 100% {background-size:120%}}原作者对
.progress-5::before
伪元素实现如下: .progress-5::before { content:""; position: absolute; top:-2px; bottom:-2px; left:100%; width:10px; background: linear-gradient( #0000 calc(50% - 7px),#000 0 calc(50% - 5px), #0000 0 calc(50% + 5px),#000 0 calc(50% + 7px),#0000 0) left /100% 100%, linear-gradient(#000 calc(50% - 5px),#0000 0 calc(50% + 5px),#000 0) left /2px 100%, linear-gradient(#0000 calc(50% - 5px),#000 0 calc(50% + 5px),#0000 0) right/2px 100%; background-repeat:no-repeat;}
#0000 是透明, 同等 transparent6. 内嵌加载这名字起得有些不贴切, 不过不重要, 读者看图自然理解 。
文章插图
<div class="progress-6"></div>.progress-6 { width:120px; height:22px; border-radius: 20px; color: #514b82; border:2px solid; position: relative;}.progress-6::before { content:""; position: absolute; margin:2px; inset:0 100% 0 0; border-radius: inherit; background: #514b82; animation:p6 2s infinite;}@keyframes p6 { 100% {inset:0}}
推荐阅读
- 兼容方案探究 聊聊使用CSS怎么实现毛玻璃特效
- linear-gradient 浅析CSS中怎么实现线性渐变
- 分享常见的7个创意灵感网站 创意灵感网站有哪些?
- 分享短视频剪辑的12个素材网站 短视频剪辑的素材网站有哪些?
- 分享获取设计灵感创意的17个网站 获取设计灵感创意的网站有哪些?
- 分享写产品文案的3个步骤 高质量的产品文案该怎么写?
- 分享写走心文案的3个步骤 走心文案该如何写?
- 剑网3指尖江湖七夕科举答案是什么-剑网3七夕科举答案汇总分享知识科普
- 公众号如何快速起号变现?免费分享公众号冷门盈利模式,快来围观!
- CF超玩令4期 分享领QQ超级会员