博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用纯 CSS 创作一个脉动 loader
阅读量:6619 次
发布时间:2019-06-25

本文共 1939 字,大约阅读时间需要 6 分钟。

1219422612-5bad682c6554b_articlex

效果预览

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

可交互视频

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

源代码下载

每日前端实战系列的全部源代码请从 github 下载:

代码解读

定义 dom,容器中包含 10 个子元素:

<div class="loader">    <span></span>    <span></span>    <span></span>    <span></span>    <span></span>    <span></span>    <span></span>    <span></span>    <span></span>    <span></span></div>

居中显示:

body {    margin: 0;    height: 100vh;    display: flex;    align-items: center;    justify-content: center;    background: linear-gradient(#eee 70%, pink);}

设置容器的样式,是粉色背景并描边的一个圆:

.loader {    width: 6em;    height: 6em;    padding: 3em;    font-size: 10px;    background-color: pink;    border-radius: 50%;    border: 0.8em solid hotpink;}

设置子元素的布局方式为横向平铺:

.loader {    display: flex;    align-items: center;    justify-content: space-between;}

设置子元素的样式:

.loader > span {    width: 0.5em;    height: 50%;    background-color: deeppink;}

增加子元素的动画效果:

.loader > span {    transform: scaleY(0.05) translateX(-0.5em);    animation: span-animate 1.5s infinite ease-in-out;}@keyframes span-animate {    0%, 100% {        transform: scaleY(0.05) translateX(-0.5em);    }    15% {        transform: scaleY(1.2) translateX(1em);    }    90%, 100% {        background-color: hotpink;    }}

设置子元素下标,让子元素依次播放动画:

.loader > span {    animation-delay: calc(var(--n) * 0.05s);}.loader > span:nth-child(1) { --n: 1; }.loader > span:nth-child(2) { --n: 2; }.loader > span:nth-child(3) { --n: 3; }.loader > span:nth-child(4) { --n: 4; }.loader > span:nth-child(5) { --n: 5; }.loader > span:nth-child(6) { --n: 6; }.loader > span:nth-child(7) { --n: 7; }.loader > span:nth-child(8) { --n: 8; }.loader > span:nth-child(9) { --n: 9; }.loader > span:nth-child(10) { --n: 10; }

增加容器动画,加强脉动的效果:

.loader {    animation: loader-animate 1.5s infinite ease-in-out;}@keyframes loader-animate {    45%, 55% {        transform: scale(1.05);    }}

大功告成!

原文地址:https://segmentfault.com/a/1190000016543472

转载地址:http://jlupo.baihongyu.com/

你可能感兴趣的文章
微信小程序开发模板消息的时候 出现 errcode: 41028, errmsg: "invalid form id hint:
查看>>
2001年日语能力考试二级真题及答案
查看>>
移动端页面布局
查看>>
FUNCS.H中的函数声明
查看>>
让织梦CMS的后台编辑器支持优酷视频
查看>>
Python语言中round函数的一个疑惑
查看>>
Spring事务隔离级别,事务传播行为
查看>>
CRC是什么?
查看>>
每次看完羽毛球赛
查看>>
第一章练习题
查看>>
三、JVM垃圾回收1(如何寻找垃圾?)
查看>>
RabbitMQ-从基础到实战(2)— 防止消息丢失
查看>>
【译】ExtJS 4.1会带来什么
查看>>
重要的话
查看>>
mysql多个TimeStamp设置(转)
查看>>
php中的占位符
查看>>
Strus2学习Exception处理集锦(一)
查看>>
BSS段 data段 text段 堆heap 和 栈stack
查看>>
数据库创建好之后如何创建scott用户
查看>>
EBS销售订单挑库发放处理程序
查看>>