效果预览

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

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:

  1. <div class="loader">
  2. <span></span>
  3. </div>

居中显示:

  1. html,
  2. body,
  3. .loader {
  4. height: 100%;
  5. display: flex;
  6. align-items: center;
  7. justify-content: center;
  8. background-color: black;
  9. }

设置 span 的样式:

  1. .loader {
  2. width: 10em;
  3. height: 10em;
  4. font-size: 28px;
  5. position: relative;
  6. }
  7. .loader span {
  8. position: absolute;
  9. width: 100%;
  10. height: 100%;
  11. background-color: rgba(100%, 0%, 0%, 0.3);
  12. box-sizing: border-box;
  13. border: 0.5em solid;
  14. border-color: white rgba(100%, 100%, 100%, 0.2);
  15. }

在 dom 中把 span 增加到 5 个:

  1. <div class="loader">
  2. <span></span>
  3. <span></span>
  4. <span></span>
  5. <span></span>
  6. <span></span>
  7. </div>

分别设置 5 个 span 的尺寸:

  1. .loader span:nth-child(1) {
  2. width: calc(20% + 20% * (5 - 1));
  3. height: calc(20% + 20% * (5 - 1));
  4. }
  5. .loader span:nth-child(2) {
  6. width: calc(20% + 20% * (5 - 2));
  7. height: calc(20% + 20% * (5 - 2));
  8. }
  9. .loader span:nth-child(3) {
  10. width: calc(20% + 20% * (5 - 3));
  11. height: calc(20% + 20% * (5 - 3));
  12. }
  13. .loader span:nth-child(4) {
  14. width: calc(20% + 20% * (5 - 4));
  15. height: calc(20% + 20% * (5 - 4));
  16. }
  17. .loader span:nth-child(5) {
  18. width: calc(20% + 20% * (5 - 5));
  19. height: calc(20% + 20% * (5 - 5));
  20. }

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

  1. .loader span {
  2. animation: animate 5s ease-in-out infinite alternate;
  3. }
  4. @keyframes animate {
  5. 0% {
  6. /* red */
  7. background-color: rgba(100%, 0%, 0%, 0.3);
  8. }
  9. 25% {
  10. /* yellow */
  11. background-color: rgba(100%, 100%, 0%, 0.3);
  12. }
  13. 50% {
  14. /* green */
  15. background-color: rgba(0%, 100%, 0%, 0.3);
  16. }
  17. 75% {
  18. /* blue */
  19. background-color: rgba(0%, 0%, 100%, 0.3);
  20. }
  21. 100% {
  22. /* purple */
  23. background-color: rgba(100%, 0%, 100%, 0.3);
  24. }
  25. }

再增加旋转效果:

  1. @keyframes animate {
  2. 0% {
  3. transform: rotate(0deg);
  4. }
  5. 100% {
  6. transform: rotate(720deg);
  7. }
  8. }

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

  1. .loader span:nth-child(1) {
  2. animation-delay: calc(0.2s * (5 - 1));
  3. }
  4. .loader span:nth-child(2) {
  5. animation-delay: calc(0.2s * (5 - 2));
  6. }
  7. .loader span:nth-child(3) {
  8. animation-delay: calc(0.2s * (5 - 3));
  9. }
  10. .loader span:nth-child(4) {
  11. animation-delay: calc(0.2s * (5 - 4));
  12. }
  13. .loader span:nth-child(5) {
  14. animation-delay: calc(0.2s * (5 - 5));
  15. }

知识点

前端每日实战:17# 视频演示如何用纯 CSS 创作炫酷的同心矩形旋转动画的更多相关文章

  1. 如何用纯 CSS 创作炫酷的同心矩形旋转动画

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

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

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

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

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

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

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

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

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

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

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

  7. 前端每日实战:86# 视频演示如何用纯 CSS 创作一个方块旋转动画

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

  8. 前端每日实战:124# 视频演示如何用纯 CSS 创作一只纸鹤

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

  9. 前端每日实战:92# 视频演示如何用纯 CSS 创作一颗逼真的土星

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

随机推荐

  1. ACM-ICPC Nanjing Onsite 2018 I. Magic Potion

    题意:类似二分图匹配给的题目,不过这次在这里给出了k,表示没人可以再多一次匹配机会,这次匹配不能用上一次被匹配的对象 分析:不能用匈牙利做俩次匹配,因为俩次的最大匹配并不等价于总和的匹配,事实证明,你 ...

  2. QTP 表格的导入导出异常信息 笔记

    0 环境 系统环境:win7 1 操作 1.1 前言 与异常遍历结合 需要表格记录下来(读写) 代码大概跑了一下 若细节有错 请自行更改 1.2 导出 systemutil.Run "D:\ ...

  3. 奇点云 x 阿里云 | 联合发布综合体数字化转型与数据创新解决方案

    2019年7月25日下午,在阿里云峰会上海站,奇点云入选阿里云首批联合解决方案合作伙伴,并联合发布了“综合体数字化转型与数据创新解决方案”,共同探索综合体的智能服务. 关于综合体的数字化转型,奇点云联 ...

  4. [LC] 58. Length of Last Word

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...

  5. leetcode第36题:有效的数独

    解题思路:按行,列,3*3方格读取元素,存入字典中.若字典中该元素的值大于1,则返回false,否则返回true. class Solution: def isValidSudoku(self, bo ...

  6. [LC] 362. Design Hit Counter

    Design a hit counter which counts the number of hits received in the past 5 minutes. Each function a ...

  7. HttpClient GET和POST请求

    package com.rogue.hclient; import java.io.BufferedReader; import java.io.IOException; import java.io ...

  8. 苹果联合创始人高调宣布弃用Facebook是什么梗?

    这段时间,扎克伯格非常郁闷.泄密丑闻不仅让Facebook股价大跌.引来审查等,还被众多互联网.科技大佬批判.孤立.如,"钢铁侠"马斯克就直接删除了SpaceX 和特斯拉的 Fac ...

  9. [LC] 235. Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  10. Nginx笔记总结十二:nginx版本号隐藏

    vim nginx.conf http { server_tokens off;} php-fpm fastcgi.conf或fcgi.conf fastcgi_param SERVER_SOFTWA ...