效果预览

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

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

可交互视频

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

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

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

源代码下载

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

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

代码解读

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

  1. <div class="container">
  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. }

定义容器尺寸:

  1. .container {
  2. width: 30em;
  3. height: 30em;
  4. font-size: 12px;
  5. }

设置容器中线条的样式:

  1. .container {
  2. color: lime;
  3. }
  4. .container span {
  5. position: absolute;
  6. width: 5em;
  7. height: 5em;
  8. border-style: solid;
  9. border-width: 1em 1em 0 0;
  10. border-color: currentColor transparent;
  11. border-radius: 50%;
  12. }

让线条在容器中居中显示:

  1. .container {
  2. display: flex;
  3. align-items: center;
  4. justify-content: center;
  5. }

定义变量,使线条从中心向外侧逐渐延伸:

  1. .container span {
  2. --diameter: calc(5em + (var(--n) - 1) * 3em);
  3. width: var(--diameter);
  4. height: var(--diameter);
  5. }
  6. .container span:nth-child(1) {
  7. --n: 1;
  8. }
  9. .container span:nth-child(2) {
  10. --n: 2;
  11. }
  12. .container span:nth-child(3) {
  13. --n: 3;
  14. }
  15. .container span:nth-child(4) {
  16. --n: 4;
  17. }
  18. .container span:nth-child(5) {
  19. --n: 5;
  20. }
  21. .container span:nth-child(6) {
  22. --n: 6;
  23. }
  24. .container span:nth-child(7) {
  25. --n: 7;
  26. }
  27. .container span:nth-child(8) {
  28. --n: 8;
  29. }
  30. .container span:nth-child(9) {
  31. --n: 9;
  32. }

设置让线条旋转的动画效果:

  1. .container span {
  2. animation: rotating linear infinite;
  3. animation-duration: calc(5s / (9 - var(--n) + 1));
  4. }
  5. @keyframes rotating {
  6. to {
  7. transform: rotate(1turn);
  8. }
  9. }

定义改变颜色的动画效果,以色相环一周 360 度为 100%,--percent 变量是指位于这个 100% 的哪个位置:

  1. @keyframes change-color {
  2. 0%, 100% {
  3. --percent: 0;
  4. }
  5. 10% {
  6. --percent: 10;
  7. }
  8. 20% {
  9. --percent: 20;
  10. }
  11. 30% {
  12. --percent: 30;
  13. }
  14. 40% {
  15. --percent: 40;
  16. }
  17. 50% {
  18. --percent: 50;
  19. }
  20. 60% {
  21. --percent: 60;
  22. }
  23. 70% {
  24. --percent: 70;
  25. }
  26. 80% {
  27. --percent: 80;
  28. }
  29. 90% {
  30. --percent: 90;
  31. }
  32. }

最后,把改变颜色的动画效果应用到容器上:

  1. .container {
  2. --deg: calc(var(--percent) / 100 * 360deg);
  3. color: hsl(var(--deg), 100%, 50%);
  4. animation: change-color 5s linear infinite;
  5. }

大功告成!

前端每日实战:81# 视频演示如何用纯 CSS 创作一个变色旋转动画的更多相关文章

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

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

  2. 前端每日实战:157# 视频演示如何用纯 CSS 创作一个棋盘错觉动画(实际上每一行都是平行的)

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

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

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

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

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

  5. 前端每日实战:2# 视频演示如何用纯 CSS 创作一个矩形旋转 loader 特效

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

  6. 如何用纯 CSS 创作一个变色旋转动画

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

  7. 如何用纯 CSS 创作一个方块旋转动画

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

  8. 前端每日实战:158# 视频演示如何用纯 CSS 创作一个雨伞 toggle 控件

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

  9. 前端每日实战:140# 视频演示如何用纯 CSS 创作文本的淡入动画效果

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

随机推荐

  1. 前端每日实战:46# 视频演示如何用纯 CSS 创作一个在容器中反弹的小球

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

  2. 四两拨千斤,ARM是如何运作、靠什么赚钱的

    在智能手机.平板大行其道的今天,ARM这个名字我们几乎每天都要见到或者听到几次,作为编辑的我更是如此,每天涉及到的新闻总是或多或少跟ARM扯上关系,它还与Intel.AMD.NVIDA等公司有说不清道 ...

  3. git分支回退以及目录回退

    分支回退 git checkout - 目录回退 cd -

  4. CentOS 7在VMware 12中共享文件看不见的问题?

    前言 由于rhel 7.2因为没有注册导致yum无法使用,包括自己配置本地源,这个命令在你没有注册都不能使用,每次使用rpm去装软件,自己去找缺少的依赖包,实在是麻烦.于是不如就换一个系统,CentO ...

  5. Linux操作系统(一)_常用命令

    1.系统工作命令 date  显示/设置系统时间或日期 date:显示时间 date -s “20190319 11:35:56”:设置时间 clock  显示设置硬件时钟 clock -s:以硬件时 ...

  6. SSH远程免密码的密钥登录服务(Linux,Linux)

    本次实验基于两台Linux虚拟机之间的实验,一台做服务器,一台做客户机,模拟免密码的密钥登录. 首先两台虚拟机需要可以ping通,用客户机访问服务器. sshd服务主配置文件路径: /etc/ssh/ ...

  7. 关于linux的一些常用的指令

    top:命令经常用来监控linux的系统状况,比如cpu.内存的使用. free:观察内存使用. Find:查找指定的文件. Whereis:查找指定的文件源和二进制文件和手册等 Which:用于查询 ...

  8. Java管理Cookie增删改查操作。

    Cookie属性 了解这几个属性之后,就知道如何进行Cookie的操作了. name Cookie的名称. value Cookie的值. maxAge Cookie的失效时间,有以下几种值,默认为- ...

  9. Intellij Idea乱码解决方案都在这里了

    乱码场景 使用Intellij Idea经常遇到乱码问题,可以总结为以下几类乱码的场景. 1.工程代码乱码. 2.main方法运行,控制台乱码. 3.tomcat运行,控制台乱码. 解决方案 1.工程 ...

  10. 博弈的dfs

    题目: 链接:https://ac.nowcoder.com/acm/contest/283/D来源:牛客网 小西买了一堆肥宅快乐水和肥宅快乐茶,准备和室友比谁更肥宅. 快乐水有A瓶,快乐茶B瓶. 小 ...