效果预览

在线演示

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

https://codepen.io/comehope/pen/bMvbRp

可交互视频教程

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

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

https://scrimba.com/p/pEgDAM/cp2dZcQ

源代码下载

本地下载

请从 github 下载。

https://github.com/comehope/front-end-daily-challenges/tree/master/017-swapping-colors-loader-animation

代码解读

定义 dom,一个容器中包含一个 span:

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

居中显示:

html,
body,
.loader {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background-color: black;
}

设置 span 的样式:

.loader {
width: 10em;
height: 10em;
font-size: 28px;
position: relative;
} .loader span {
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(100%, 0%, 0%, 0.3);
box-sizing: border-box;
border: 0.5em solid;
border-color: white rgba(100%, 100%, 100%, 0.2);
}

在 dom 中把 span 增加到 5 个:

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

分别设置 5 个 span 的尺寸:

.loader span:nth-child(1) {
width: calc(20% + 20% * (5 - 1));
height: calc(20% + 20% * (5 - 1));
} .loader span:nth-child(2) {
width: calc(20% + 20% * (5 - 2));
height: calc(20% + 20% * (5 - 2));
} .loader span:nth-child(3) {
width: calc(20% + 20% * (5 - 3));
height: calc(20% + 20% * (5 - 3));
} .loader span:nth-child(4) {
width: calc(20% + 20% * (5 - 4));
height: calc(20% + 20% * (5 - 4));
} .loader span:nth-child(5) {
width: calc(20% + 20% * (5 - 5));
height: calc(20% + 20% * (5 - 5));
}

增加颜色变幻的动画效果:

.loader span {
animation: animate 5s ease-in-out infinite alternate;
} @keyframes animate {
0% {
/* red */
background-color: rgba(100%, 0%, 0%, 0.3);
} 25% {
/* yellow */
background-color: rgba(100%, 100%, 0%, 0.3);
} 50% {
/* green */
background-color: rgba(0%, 100%, 0%, 0.3);
} 75% {
/* blue */
background-color: rgba(0%, 0%, 100%, 0.3);
} 100% {
/* purple */
background-color: rgba(100%, 0%, 100%, 0.3);
}
}

再增加旋转效果:

@keyframes animate {
0% {
transform: rotate(0deg);
} 100% {
transform: rotate(720deg);
}
}

最后,为每个 span 设置动画延时,增加动感:

.loader span:nth-child(1) {
animation-delay: calc(0.2s * (5 - 1));
} .loader span:nth-child(2) {
animation-delay: calc(0.2s * (5 - 2));
} .loader span:nth-child(3) {
animation-delay: calc(0.2s * (5 - 3));
} .loader span:nth-child(4) {
animation-delay: calc(0.2s * (5 - 4));
} .loader span:nth-child(5) {
animation-delay: calc(0.2s * (5 - 5));
}

知识点

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

如何用纯 CSS 创作炫酷的同心矩形旋转动画的更多相关文章

  1. 前端每日实战:17# 视频演示如何用纯 CSS 创作炫酷的同心矩形旋转动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/bMvbRp 可交互视频教程 此视频 ...

  2. 17.纯 CSS 创作炫酷的同心矩形旋转动画

    原文地址:https://segmentfault.com/a/1190000014807564 感想: 这个特效不难,但是这想法可能想不到,哈哈,怎么又废了. HTML代码: <div cla ...

  3. 17.1拓展之纯 CSS 创作炫酷的同心圆旋转动画

    效果地址:https://codepen.io/flyingliao/pen/ebjEMm?editors=1100 HTML代码: <div class="loader"& ...

  4. 如何用纯 CSS 创作一个文本淡入淡出的 loader 动画

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ERwpeG 可交互视频 ...

  5. 前端每日实战:53# 视频演示如何用纯 CSS 创作一个文本淡入淡出的 loader 动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ERwpeG 可交互视频 此视频是可 ...

  6. 前端每日实战:160# 视频演示如何用纯 CSS 创作一个打开内容弹窗的交互动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/GYXvez 可交互视频 此视频是可 ...

  7. 前端每日实战:149# 视频演示如何用纯 CSS 创作一个宝路薄荷糖的动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oagrvz 可交互视频 此视频是可 ...

  8. 前端每日实战:52# 视频演示如何用纯 CSS 创作一个小球绕着圆环盘旋的动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gKxyWo 可交互视频 此视频是可 ...

  9. 如何用纯 CSS 创作文本滑动特效的 UI 界面

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/QrxxaW 可交互视频教 ...

随机推荐

  1. P5163 WD与地图(整体二分+权值线段树)

    传送门 细节要人命.jpg 这题思路太新奇了--首先不难发现可以倒着做变成加边,但是它还需要我们资瓷加边的同时维护强连通分量.显然加边之后暴力跑是不行的 然后有一个想法,对于一条边\((u,v)\), ...

  2. 如何使用webstorm去操作git

    0. 前言 在上一篇文章中,讲述了使用webstorm去调试node程序,最近研究了一下如何使用webstorm去操作git. 对于git的使用,大家的使用方式均有不同,最王道的方式非命令行莫属,基于 ...

  3. 如何正确访问Redis中的海量数据?服务才不会挂掉!

    一.前言 有时候我们需要知道线上的Redis的使用情况,尤其需要知道一些前缀的key值,让我们怎么去查看呢?并且通常情况下Redis里的数据都是海量的,那么我们访问Redis中的海量数据?如何避免事故 ...

  4. 第十八篇 .NET高级技术之Linq与EF Code-First Fluent API基础讲解

    1.FluentApi简介 在这里提供了一个fluentapi基础的DEMO然后咱们在进一步的学习,直接上干货. 第一步在数据库创建一个表:person 第二步:新建控制台程序FluentAPI 第三 ...

  5. ngxin做http强制跳转https,接口的POST请求变成GET

    http强制跳转https出现了问题.修改nginx配置如下即可解决: server { listen 80; server_name *.snsprj.cn; return 307 https:// ...

  6. 「软件」仿站小工具v9.0

    仿站小工具是通过网址下载静态网页的工具.从输入的网址下载html代码,提取出JS.Css.Image.Picture.Flash等静态文件网址,再从下载完好的Css代码中提取出Image静态文件网址, ...

  7. Spring Cache无效的问题以及解决办法

    http://blog.csdn.net/kimylrong/article/details/50126979 @Cacheable标注的方法,如果其所在的类实现了某一个接口,那么该方法也必须出现在接 ...

  8. redis的多路复用io

    redis基于reactor开发了自己的网路事件处理器,被称为文件事件处理器.使用io多路复用来同时监听多个套接字,来响应客户端的连接应答.命令请求.命令恢复.多路复用技术使得redis可以使用单进程 ...

  9. Kruskal && Prim模板

    1. Kruskal(并查集模板): /* Kruskal:并查集实现,记录两点和距离,按距离升序排序,O (ElogE) */ struct Edge { int u, v, w; bool ope ...

  10. c#学习系列之关键字where

    where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量.    1.接口约束.         例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T 就 ...