效果预览

在线演示

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

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. Phoenix在2345公司的实践(转)

    本文介绍Phoenix在2345公司的实践,主要是实时查询平台的背景.难点.Phoenix解决的问题.Phoenix-Sql的优化以及Phoenix与实时数仓的融合思路.具体内容如下: 实时数据查询时 ...

  2. 6.while循环正向反向打印一句话

    message = "伤情最是晚凉天,憔悴厮人不堪言."' count=0 num=-1 while count<len(message): print(message[co ...

  3. 阿里云服务器及部署mysql

    可通过百度获取内容不再赘述. 远程连接: 远程连接阿里云服务器需在服务器上开放443端口,方法自行百度 win10通过系统自带远程连接服务连接时需安装凭据:   http://blog.csdn.ne ...

  4. oracle常用的一些查询命令

    .查看所有用户 select * from dba_users; select * from all_users; select * from user_users; .查看用户或角色系统权限(直接赋 ...

  5. 极限和连续 limits + Continue

    上一节我们将导数定义为切线的斜率,这是一种几何解释.我们求出了1/x的斜率为 -1/x2 求出了 f(x) = xn 的斜率是 f”(x) = n*xn-1  这些几何的推导都是根据y-y0  = k ...

  6. elasticsearch接口开发(新)

    此文在上一篇文章的基础上稍做了些许修改,主要在springboot整合ES后的包路径上,如下是新的目录结构 下面贴出代码 MyConfig.java package com.ylht.config; ...

  7. Web service简介 与servletContext的参数

    Web service顾名思义是基于web的服务,它是一种跨平台,跨语言的服务. 我们可以这样理解它,比如说我们可以调用互联网上查询天气信息的web服务,把它嵌入到我们的B/S程序中,当用户从我们的网 ...

  8. javascript 找出数字数组中最大的数

    找出数字数组中最大的数 var Match = (function(){ var arr = null; var len = 0; return { max:function(arr,len){ ar ...

  9. sass 常用用法笔记

    最近公司开发的h5项目,需要用到sass,所以领导推荐让我去阮一峰大神的SASS用法指南博客学习,为方便以后自己使用,所以在此记录. 一.代码的重用 1.继承:SASS允许一个选择器,继承另一个选择器 ...

  10. web页面调用IOS的事件

    /** * js 调用ios的方法 * @param callback */ function connectWebViewJavascriptBridge(callback) { if (windo ...