博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端每日实战:25# 视频演示如何用纯 CSS 创作一个慧星拖尾效果的 loader 动画...
阅读量:6757 次
发布时间:2019-06-26

本文共 2225 字,大约阅读时间需要 7 分钟。

图片描述

效果预览

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

可交互视频教程

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

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

源代码下载

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

代码解读

定义dom,设置3层容器:

居中显示:

html,body,.loader {    height: 100%;    display: flex;    align-items: center;    justify-content: center;    background-color: black;}

定义容器尺寸:

.loader {    width: 200px;    height: 200px;    position: relative;}.loader .face {    position: absolute;    width:100%;    height: 100%;    border: 2px solid white;    border-radius: 50%;}

画出半圆弧:

.loader .face {    --color: gold;    border-top-color: var(--color);    border-left-color: var(--color);}

画出弧线的端点:

.loader .face .circle {    position: absolute;    top: 50%;    left: 50%;    width: 50%;    height: 1px;    background-color: white;    transform-origin: left;    transform: rotate(-45deg);}.loader .face .circle::before {    position: absolute;    top: -5px;    right: -5px;    content: '';    background-color: var(--color);    width: 10px;    height: 10px;    border-radius: 50%;}

给端点增加光晕效果:

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

隐藏掉辅助线:

.loader .face {    border: 2px solid transparent;}.loader .face .circle {    background-color: transparent;}

在 dom 中再增加一条弧线:

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

.loader .face:nth-child(1) {    width:100%;    height: 100%;}.loader .face:nth-child(2) {    width:70%;    height: 70%;}

调整2条弧线的颜色:

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

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

.loader .face:nth-child(1) {    --deg: 0deg;}.loader .face:nth-child(2) {    --deg: 180deg;}.loader .face .circle {    transform: rotate(calc(var(--deg) - 45deg));}

定义动画效果:

.loader .face {    animation: animate 3s linear infinite;}@keyframes animate{    from {        transform: rotate(0deg);    }        to {        transform: rotate(360deg);    }}

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

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

大功告成!

转载地址:http://ywzeo.baihongyu.com/

你可能感兴趣的文章
“蚁族” 的生活方式画像
查看>>
数据结构概述
查看>>
python自学笔记(二)python基本数据类型之字符串处理
查看>>
springboot1.5升级2.0后遇到的问题
查看>>
Leetcode Word Break II
查看>>
java 8 in action
查看>>
计算机容量及计算分析
查看>>
javascript闭包
查看>>
腻子脚本polyfill
查看>>
IIS与ASP.NET中的线程池
查看>>
win8系统安装.net Framework3.5
查看>>
Shel脚本-初步入门之《04》
查看>>
Nginx入门之两种handler函数的挂载方式
查看>>
polygonZM---> poliygon
查看>>
LINQ to SQL:创建你的第一个程序
查看>>
K 班1-7,alpha,beta 作业成绩汇总
查看>>
select 的问题
查看>>
Fiddler如何添加ServerIP显示
查看>>
Android瀑布流优化,解决Recyclerview展示大批量图片时Item自动切换、闪烁、空白等问题...
查看>>
《c程序设计语言》读书笔记-5.4-指针实现strend
查看>>