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

简介: 效果预览在线演示按下右侧的“点击预览”按钮在当前页面预览,点击链接全屏预览。https://codepen.io/zhang-ou/pen/erRzzR可交互视频教程此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

效果预览

在线演示

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

https://codepen.io/zhang-ou/pen/erRzzR

可交互视频教程

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

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

https://scrimba.com/c/cwrJys7

源代码下载

本地下载

请从 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;
}

大功告成!

知识点

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

相关文章
|
2月前
|
Web App开发 JSON 前端开发
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)
53 0
|
3月前
|
JSON 前端开发 JavaScript
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)(上)
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)
56 0
|
3月前
|
Web App开发 前端开发 JavaScript
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)(下)
Webpack【搭建Webpack环境、Webpack增加配置文件、Webpack中使用Loader、Webpack分离CSS文件 】(一)-全面详解(学习总结---从入门到深化)
26 0
|
4月前
|
前端开发
CSS小技巧之单标签loader
CSS小技巧之单标签loader
27 0
CSS 05 transition特效
transition-property 过渡属性,默认值为all transition-duration 过渡持续时间,默认时间为0s transition-timing-function 过渡函数,默认ease函数,还有ease-out(先快后慢)、ease-in(先慢后快)、linear(匀速)等等函数 transition-delay 过渡延迟时间,默认0s <div class="ceng"> </div> .ceng{ width:100px; height:100px; background-color:pink; cursor:point
|
前端开发
HTML+CSS+JS实现卡通人物C罗ui特效
2022年卡塔尔世界杯(英语:FIFA World Cup Qatar 2022)是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足球赛。除此之外,卡塔尔世界杯还是首次在北半球冬季举行、首次由从未进过世界杯决赛圈的国家举办的世界杯足球赛
HTML+CSS+JS实现卡通人物C罗ui特效
|
前端开发 JavaScript 开发者
loader - 配置处理 css 样式表的第三方 loader| 学习笔记
快速学习 loader - 配置处理 css 样式表的第三方 loader
124 0
|
前端开发
CSS特效集锦(9款 , 总有一款是你喜欢的)
主要是: 穿越时空特效, 图片放大镜, 3D相册, 立方体相册, 昼夜更替特效, 飘雪, 七彩雨, 签名生成器, 水波纹动画等
CSS特效集锦(9款 , 总有一款是你喜欢的)
|
前端开发