效果预览

在线演示

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

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

可交互视频教程

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

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

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

源代码下载

本地下载

每日前端实战系列的全部源代码请从 github 下载:

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,一个容器中包含 9 个子元素:

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

居中显示:

  1. body {
  2. margin: 0;
  3. height: 100vh;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background-color: black;
  8. }

定义容器和子元素尺寸,是一个大正方形里包含 9 个小正方形:

  1. .loader {
  2. width: 10em;
  3. height: 10em;
  4. display: grid;
  5. grid-template-columns: repeat(3, 1fr);
  6. grid-gap: 0.5em;
  7. }

把图案调整为大菱形中包含 9 个小菱形:

  1. .loader {
  2. transform: rotate(45deg);
  3. }

以竖向的小菱形为单位,为小菱形块上色:

  1. .loader span {
  2. background-color: var(--c);
  3. }
  4. .loader span:nth-child(7) {
  5. --c: tomato;
  6. }
  7. .loader span:nth-child(4),
  8. .loader span:nth-child(8) {
  9. --c: gold;
  10. }
  11. .loader span:nth-child(1),
  12. .loader span:nth-child(5),
  13. .loader span:nth-child(9) {
  14. --c: limegreen;
  15. }
  16. .loader span:nth-child(2),
  17. .loader span:nth-child(6) {
  18. --c: dodgerblue;
  19. }
  20. .loader span:nth-child(3) {
  21. --c: mediumpurple;
  22. }

定义动画效果:

  1. .loader span {
  2. animation: blinking 2s linear infinite;
  3. animation-delay: var(--d);
  4. transform: scale(0);
  5. }
  6. @keyframes blinking {
  7. 0%, 100% {
  8. transform: scale(0);
  9. }
  10. 40%, 80% {
  11. transform: scale(1);
  12. }
  13. }

最后,为小菱形设置时延,增强动感:

  1. .loader span:nth-child(7) {
  2. --d: 0s;
  3. }
  4. .loader span:nth-child(4),
  5. .loader span:nth-child(8) {
  6. --d: 0.2s;
  7. }
  8. .loader span:nth-child(1),
  9. .loader span:nth-child(5),
  10. .loader span:nth-child(9) {
  11. --d: 0.4s;
  12. }
  13. .loader span:nth-child(2),
  14. .loader span:nth-child(6) {
  15. --d: 0.6s;
  16. }
  17. .loader span:nth-child(3) {
  18. --d: 0.8s;
  19. }

大功告成!

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

如何用纯 CSS 创作一个菱形 loader 动画的更多相关文章

  1. 前端每日实战:45# 视频演示如何用纯 CSS 创作一个菱形 loader 动画

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

  2. 45.纯 CSS 创作一个菱形 loader 动画

    原文地址:https://segmentfault.com/a/1190000015208027#articleHeader3 感想: 网格布局-> display: grid; HTML co ...

  3. 如何用纯 CSS 创作一个均衡器 loader 动画

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

  4. 前端每日实战:42# 视频演示如何用纯 CSS 创作一个均衡器 loader 动画

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

  5. 如何用纯 CSS 创作一个充电 loader 特效

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

  6. 前端每日实战:146# 视频演示如何用纯 CSS 创作一个脉动 loader

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

  7. 前端每日实战:113# 视频演示如何用纯 CSS 创作一个赛车 loader

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

  8. 前端每日实战:8# 视频演示如何用纯 CSS 创作一个充电 loader 特效

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

  9. 如何用纯 CSS 创作一个摇摇晃晃的 loader

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

随机推荐

  1. Java泛型学习摘抄

  2. idea | 设置支持java8的lambda表达式

    修改配置: setting:       project structure:

  3. python模块之struct

    # #********struct模块********# # 1.按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时, # 不能传输int,此时先将int转化为字节流,然后再发 ...

  4. Qt 2D绘图之四:绘图中的其他问题

    一.重绘事件 前面讲到的所有绘制操作都是在重绘事件处理函数paintEvent()中完成的,是QWidget类中定义的函数.一个重绘事件用来重绘一个部件的全部或者部分区域,下面几个原因中的任意一个都会 ...

  5. 如何使用程序调用webApi接口

    如何使用程序调用webApi接口 在C#中,传统调用HTTP接口一般有两种办法: WebRequest/WebResponse组合的方法调用 WebClient类进行调用. 第一种方法抽象程度较低,使 ...

  6. POJ-1258-Agri Ned

    链接:https://vjudge.net/problem/POJ-1258#author=fuxianda 题意: 有n个农场,已知这n个农场都互相相通,有一定的距离,现在每个农场需要装光纤,问怎么 ...

  7. [ZPG TEST 114] 括号匹配【树分治 点分治 括号序列】

    1.      括号匹配   有一棵树,每个节点上都有一个括号(左括号或者右括号).有多少个有序点对(u, v)从u到v的路径上的节点构成的字符串是一个合法的括号匹配?(我们称这样的点对是合法的) 输 ...

  8. 洛谷[LnOI2019]长脖子鹿省选模拟赛t1 -> 快速多项式变换

    快速多项式 做法:刚拿到此题有点蒙,一开始真没想出来怎么做,于是试着去自己写几个例子. 自己枚举几种情况之后就基本看出来了,其实本题中 n 就是f(m)在m进制下的位数,每项的系数就是f(m)在m进制 ...

  9. jquery.qrcode.min.js生成二维码

    jquery.qrcode.min.js是一款可以生成二维码的插件,使用前提是先引入jquery,因为jquery.qrcode.min.js依赖jquery. 基本用法 1.引入js <scr ...

  10. C# DataTable的詳細用法 (转)

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...