如何用纯 CSS 创作一个荧光脉冲 loader 特效

效果预览
按下右侧的“点击预览”按钮在当前页面预览,点击链接全屏预览。
https://codepen.io/zhang-ou/pen/erRzzR
可交互视频教程
此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。
请用 chrome, safari, edge 打开观看。
源代码下载
请从 github 下载。
https://github.com/comehope/front-end-daily-challenges/tree/master/011-ripple-pulse-loader-animation
代码解读
定义 dom,只有一个元素:
<div class="circle"></div>
居中显示:
html,
body,
.circle {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: black;
}
画出中间的实心圆:
:root {
    --innerRadius: 2em;
}
.circle {
    width: calc(var(--innerRadius) * 2);
    height: calc(var(--innerRadius) * 2);
    background-color: lime;
    border-radius: 50%;
}
画出圆环:
.circle {
    box-shadow: 0 0 0 calc(var(--innerRadius) - 0.4em) black,
                0 0 0 var(--innerRadius) lime;
}
用伪元素 ::before 画出动画用到的圆环:
.circle::before {
    content: '';
    position: absolute;
    width: calc(var(--innerRadius) * 2 * 2);
    height: calc(var(--innerRadius) * 2 * 2);
    border: 2px solid lime;
    border-radius: 50%;
}
增加动画效果:
.circle::before
    animation: pulse 2s linear infinite;
}
@keyframes pulse {
    from {
        transform: scale(1);
    }
    to {
        transform: scale(2);
    }
}
优化动画——增加渐淡和弹性效果:
.circle::before
    animation: pulse 2s ease-out infinite;
}
@keyframes pulse {
    from {
        filter: opacity(0.9);
    }
    to {
        filter: opacity(0);
    }
}
最后,用伪元素 ::after 再画出一个动的圆环:
.circle::after {
    content: '';
    position: absolute;
    width: calc(var(--innerRadius) * 2 * 2);
    height: calc(var(--innerRadius) * 2 * 2);
    border: 2px solid lime;
    border-radius: 50%;
    animation: pulse 2s ease-out infinite;
}
.circle::after {
    animation-delay: 1s;
}
大功告成!
知识点
- variables https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Variables
- calc() https://developer.mozilla.org/en-US/docs/Web/CSS/calc
- animation-timing-function https://developer.mozilla.org/en-US/docs/Web/CSS/animation-timing-function
- filter https://developer.mozilla.org/en-US/docs/Web/CSS/filter#Functions
- box-shadow https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow
原文地址:https://segmentfault.com/a/1190000014700727
如何用纯 CSS 创作一个荧光脉冲 loader 特效的更多相关文章
- 前端每日实战:11# 视频演示如何用纯 CSS 创作一个荧光脉冲 loader 特效
		效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/erRzzR 可交互视频教程 此视频是可以交 ... 
- 11.纯 CSS 创作一个荧光脉冲 loader 特效
		原文地址:https://segmentfault.com/a/1190000014700727 HTML代码: <html> <head> <link rel=&quo ... 
- 前端每日实战:2# 视频演示如何用纯 CSS 创作一个矩形旋转 loader 特效
		效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/vjLQMM 可交互视频教程 此视频是可以交 ... 
- 2.纯 CSS 创作一个矩形旋转 loader 特效
		原文地址:2.纯 CSS 创作一个矩形旋转 loader 特效 扩展后地址:https://scrimba.com/c/cNJVWUR 扩展地址:https://codepen.io/pen/ HT ... 
- 如何用纯 CSS 创作一个极品飞车 loader
		效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MBbEMo 可交互视频 ... 
- 如何用纯 CSS 创作一个按钮文字滑动特效
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. 在线预览 https://codepen.io/zhang-ou/pen/GdpPLE 可交互视频教 ... 
- 前端每日实战:84# 视频演示如何用纯 CSS 创作一个极品飞车 loader
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MBbEMo 可交互视频 此视频是可 ... 
- 前端每日实战:1# 视频演示如何用纯 CSS 创作一个按钮文字滑动特效
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/zhang-ou/pen/GdpPLE 可交互视频教程 此视频 ... 
- 1.纯 CSS 创作一个按钮文字滑动特效 + 弹幕(残缺)
		原文地址:1# 视频演示如何用纯 CSS 创作一个按钮文字滑动特效 扩展后地址:https://scrimba.com/c/cJkzMfd HTML代码: <html> <head& ... 
随机推荐
- Cloudera Manager是啥?主要是干啥的?
			简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提 ... 
- 中国剩余定理 POJ 1006 Biorhythms
			题目传送门 题意:POJ有中文题面 分析:其实就是求一次同余方程组:(n+d)=p(%23), (n+d)=e(%28), (n+d)=i(%33),套用中国剩余定理模板 代码: /********* ... 
- SQL 语句学习
			Sql语句学习 一. select playerId, count(playerId) as num from OperateLog_$i where playerId > 0 and roo ... 
- 495 Teemo Attacking 提莫攻击
			在<英雄联盟>的世界中,有一个叫“提莫”的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态.现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒 ... 
- Suricata的命令行解释
			见官网 https://suricata.readthedocs.io/en/latest/command-line-options.html root@SELKS:~# suricata Suric ... 
- java学习第二章
- AJPFX总结内部类
			内部类:内部类的访问规则:1. 内部类可以直接访问外部类中的成员,包括私有 原因是内部类中持有了一个外部类的引用,格式:外部类.this2. 外部类要访问内部类,必须建立内部类对象访问格式:1. ... 
- a=a+b与a+=b的区别
			在一次工作中身边的一位资深的同事突然问了个a=a+b与a+=b有什么区别 此时有点尴尬了 不知道是真的不知道咧还是别有用意....今天抽点时间针对此问题做个小总结 一.性能方面 a=a+b是加法运算 ... 
- CSS进阶:提高你前端水平的 4 个技巧
			译者注:随着 Node.js .react-native 等技术的不断出现,和互联网行业的创业的层出不穷,了解些前端知识,成为全栈攻城师,快速的产出原型,展示你的创意,对程序员,尤其是在创业的程序员来 ... 
- Linux 合并多个txt文件到一个文件
			Linux 或 类Unix 下实现合并多个文件内容到一个文件中 代码如下 cat b1.txt b2.txt b3.txt > b_all.txt 或者 cat *.txt > merge ... 
