效果预览

在线演示

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

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

可交互视频教程

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

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

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

源代码下载

本地下载

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

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

代码解读

定义dom,设置3层容器:

  1. <div class="loader">
  2. <div class="face">
  3. <div class="circle"></div>
  4. </div>
  5. </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. }

定义容器尺寸:

  1. .loader {
  2. width: 200px;
  3. height: 200px;
  4. position: relative;
  5. }
  6. .loader .face {
  7. position: absolute;
  8. width:100%;
  9. height: 100%;
  10. border: 2px solid white;
  11. border-radius: 50%;
  12. }

画出半圆弧:

  1. .loader .face {
  2. --color: gold;
  3. border-top-color: var(--color);
  4. border-left-color: var(--color);
  5. }

画出弧线的端点:

  1. .loader .face .circle {
  2. position: absolute;
  3. top: 50%;
  4. left: 50%;
  5. width: 50%;
  6. height: 1px;
  7. background-color: white;
  8. transform-origin: left;
  9. transform: rotate(-45deg);
  10. }
  11. .loader .face .circle::before {
  12. position: absolute;
  13. top: -5px;
  14. right: -5px;
  15. content: '';
  16. background-color: var(--color);
  17. width: 10px;
  18. height: 10px;
  19. border-radius: 50%;
  20. }

给端点增加光晕效果:

  1. .loader .face .circle::before {
  2. box-shadow: 0 0 20px var(--color),
  3. 0 0 40px var(--color),
  4. 0 0 60px var(--color),
  5. 0 0 80px var(--color),
  6. 0 0 100px var(--color),
  7. 0 0 0 5px rgba(255,255,0,0.1);
  8. }

隐藏掉辅助线:

  1. .loader .face {
  2. border: 2px solid transparent;
  3. }
  4. .loader .face .circle {
  5. background-color: transparent;
  6. }

在 dom 中再增加一条弧线:

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

调整2条弧线的直径,变成同心弧:

  1. .loader .face:nth-child(1) {
  2. width:100%;
  3. height: 100%;
  4. }
  5. .loader .face:nth-child(2) {
  6. width:70%;
  7. height: 70%;
  8. }

调整2条弧线的颜色:

  1. .loader .face:nth-child(1) {
  2. --color: gold;
  3. }
  4. .loader .face:nth-child(2) {
  5. --color: lime;
  6. }

调整2条弧线的端点位置:

  1. .loader .face:nth-child(1) {
  2. --deg: 0deg;
  3. }
  4. .loader .face:nth-child(2) {
  5. --deg: 180deg;
  6. }
  7. .loader .face .circle {
  8. transform: rotate(calc(var(--deg) - 45deg));
  9. }

定义动画效果:

  1. .loader .face {
  2. animation: animate 3s linear infinite;
  3. }
  4. @keyframes animate
  5. {
  6. from {
  7. transform: rotate(0deg);
  8. }
  9. to {
  10. transform: rotate(360deg);
  11. }
  12. }

最后,让第 2 条弧线反向旋转:

  1. .loader .face:nth-child(2) {
  2. animation-direction: reverse;
  3. }

大功告成!

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

如何用纯 CSS 创作一个慧星拖尾效果的 loader 动画的更多相关文章

  1. 前端每日实战:25# 视频演示如何用纯 CSS 创作一个慧星拖尾效果的 loader 动画

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

  2. 25.纯 CSS 创作一个慧星拖尾效果的 loader 动画

    原文地址:https://segmentfault.com/a/1190000014916281 简化地址:https://codepen.io/pen/?editors=1100 HTML代码: & ...

  3. 如何用纯 CSS 创作一个跳 8 字型舞的 loader

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

  4. 前端每日实战:71# 视频演示如何用纯 CSS 创作一个跳 8 字型舞的 loader

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

  5. 如何用纯 CSS 创作一个雷达扫描动画

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

  6. 如何用纯 CSS 创作一个跳动的字母 i

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

  7. 如何用纯 CSS 创作一个单元素抛盒子的 loader

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

  8. 如何用纯 CSS 创作一个过山车 loader

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

  9. 如何用纯 CSS 创作一个极品飞车 loader

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

随机推荐

  1. fastjson =< 1.2.47 反序列化漏洞浅析

    fastjson =< 1.2.47 反序列化漏洞浅析 iiusky 洛米唯熊 今天 文章出处: https://www.03sec.com/3240.shtmlhttps://www.secq ...

  2. Flutter文本框TextField

    参数详解TextField同时也使用Text 的部分属性: 属性 作用controller 控制器,如同 Android View iddecoration 输入器装饰keyboardType 输入的 ...

  3. Java项目框架搭建系列(Java学习路线)

    前言: 已经工作4年,真是时间飞逝. 其实当你在一间公司工作一两年之后,公司用到的开发框架的基本使用你应该都会了. 你会根据一个现有项目A复制一下搭建出另外一个类似框架的项目B,然后在项目B上进行业务 ...

  4. 20165207 Exp8 Web基础

    目录 20165207 Exp8 Web基础 0. 环境配置 0.1. apache 0.2. MySQL 0.3. php 0.4. php-mysql编程库 1. 前台HTML编写静态网页 2. ...

  5. ThinkPhp中验证码不显示和配置项的问题解决方法

    1.验证码不显示在调用验证码之前加上 ob_clean();像这样: public function verify(){ ob_clean(); $verify = new \Think\Verify ...

  6. kindeditor 引用js架包问题

    最近在搞kindeditor(富文本编辑器),遇到了很多插件修改无效的问题,仔细研究了一下才发现,别有洞天. 下面来介绍一下引用的js架包.具体有什么用. <!-- kindeditor.js ...

  7. DP&图论 DAY 6 上午

    DP&图论  DAY 6  上午 双连通分量 从u-->v不存在必经边,点 点双连通分量 边双连通分量 点/边双连通分量缩点之后变成一个树 找连通块的时候不越过割点或者桥 P3469 [ ...

  8. DP&图论 DAY 4 上午

    DP&图论  DAY 4  上午 概率与期望 概率◦某个事件A发生的可能性的大小,称之为事件A的概率,记作P(A).◦假设某事的所有可能结果有n种,每种结果都是等概率,事件A涵盖其中的m种,那 ...

  9. Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解

    Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解 操作系统:Windows 7 JDK版本:1.6.0_33 Eclipse版本:Juno ...

  10. javascript之DOM总结

    DOM简介    全称Document Object Model,即文档对象模型.DOM描绘了一个层次化的树,允许开发人员添加.删除.修改页面的某一部分.    浏览器在解析HTML页面标记的时候,其 ...