如何用纯 CSS 创作一个文本淡入淡出的 loader 动画

效果预览

在线演示

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


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


可交互视频


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


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


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


源代码下载


本地下载

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


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


代码解读


定义 dom,容器是包含 7 个子元素,每个子元素中有一个字母:

<div class="loader"><span>l</span><span>o</span><span>a</span><span>d</span><span>i</span><span>n</span><span>g</span>
</div>

居中显示:

body {margin: 0;height: 100vh;display: flex;align-items: center;justify-content: center;background-color: black;
}

设置容器尺寸:

.loader {width: 40em;height: 3em;
}

设置文字样式:

.loader {color: dodgerblue;font-size: 1.5em;text-transform: uppercase;font-family: sans-serif;
}

给文字增加渐隐渐显动画:

.loader span {animation: moving 2s linear infinite;
}@keyframes moving {0% {filter: opacity(0);}33% {filter: opacity(1);}66% {filter: opacity(1);}100% {filter: opacity(0);}
}

设置动画延时,增强动画效果:

.loader span {animation-delay: calc((var(--n) - 10) * 0.2s)
}.loader span:nth-child(1) {--n: 1;
}.loader span:nth-child(2) {--n: 2;
}.loader span:nth-child(3) {--n: 3;
}.loader span:nth-child(4) {--n: 4;
}.loader span:nth-child(5) {--n: 5;
}.loader span:nth-child(6) {--n: 6;
}.loader span:nth-child(7) {--n: 7;
}

设置文字旋转效果:

.loader {position: relative;
}.loader span {position: absolute;height: 3em;
}@keyframes moving {0% {filter: opacity(0);transform: rotate(-180deg);}33% {filter: opacity(1);transform: rotate(0deg);}66% {filter: opacity(1);transform: rotate(0deg);}100% {filter: opacity(0);transform: rotate(180deg);}
}

增加文字移动的效果:

@keyframes moving {0% {filter: opacity(0);transform: rotate(-180deg);left: 100%;}33% {filter: opacity(1);transform: rotate(0deg);left: 60%;}66% {filter: opacity(1);transform: rotate(0deg);left: 40%;}100% {filter: opacity(0);transform: rotate(180deg);left: 0;}
}

增加文字变色效果:

.loader {animation: change-color 10s linear infinite;
}@keyframes change-color {0% {color: dodgerblue;}20% {color: hotpink;}40% {color: gold;}60% {color: mediumpurple;}80% {color: lightgreen;}100% {color: dodgerblue;}
}

最后,把可能出现在页面外的部分隐藏掉:

body {overflow: hidden;
}

大功告成!

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


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java csf_WebService CSF使用详解 | 学步园

一建立service:1)CxfService:WebServicepublicinterfaceCxfService {WebMethodpublicWebResultList getTasksByActor(WebParam(name"actor") String actor);WebMethodpublicvoidcreateAndStartProcessInstance(WebParam(name"processName") Str…

软件工程和项目管理的区别

软件工程的定义: 软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 项目管理的定义: 项目管理是一个管理学分支的学…

如何启动多个WebLogic托管服务器

WebLogic Server文档建议您创建专用的管理服务器,然后分离托管服务器以进行应用程序部署。 在这里,我将向您展示如何在与管理服务器相同的主机中创建一个或多个托管服务器。 我假设您已经安装了WLS,并已创建并正在运行自己的域。 如果您以前…

《机器学习基石》第一周 —— When Can Machine Learn?

(注:由于之前进行了吴恩达机器学习课程的学习,其中有部分内容与机器学习基石的内容重叠,所以以下该系列的笔记只记录新的知识) 《机器学习基石》课程围绕着下面这四个问题而展开: 主要内容: 一、…

如何用纯 CSS 创作一盘传统蚊香

效果预览 在线演示 按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。https://codepen.io/comehope/pen/BVpvMz可交互视频教程此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。请用 chrome, safari, edge 打…

LeetCode 905. 按奇偶排序数组

LeetCode 905. 按奇偶排序数组 转载于:https://www.cnblogs.com/hglibin/p/10794792.html

java父类序列化_父类的序列化与 Transient 关键字

情境:一个子类实现了 Serializable 接口,它的父类都没有实现 Serializable 接口,序列化该子类对象,然后反序列化后输出父类定义的某变量的数值,该变量数值与序列化时的数值不同。解决:要想将父类对象也序列…

Java:在Runnable中处理RuntimeException

去年年底,我正在运行预定的任务来监视Neo4j集群,而我遇到的问题之一是有时监视会退出。 我最终意识到这是因为RuntimeException被抛出到Runnable方法中,而我没有处理它。 以下代码演示了该问题: import java.util.ArrayList; im…

错误代码: 1231 - Variable 'sql_mode' can't be set to the value of 'NULL'

错误代码: 1231 - Variable sql_mode cant be set to the value of NULL 错误代码: 1231 - Variable sql_mode cant be set to the value of NULL 错误代码: 1231 - Variable sql_mode cant be set to the value of NULL mysql中的提示 删除注…

[Unity3D]Unity3D游戏开发之怪物AI

大家好。欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章,我的博客地址为:http://blog.csdn.net/qinyuanpei。在上一篇文章中,我们基本上实现了一个小地图的功能,今天呢,我们来实现怪物AI,所谓怪物AI…

中国第一批写java的人_中国java开源界最可爱的人们

评论# re: 中国java开源界最可爱的人们2007-12-07 15:29sitinspring如果少一些抒情,多一点实质内容,文章更耐看. 回复 更多评论# re: 中国java开源界最可爱的人们[未登录]2007-12-07 15:49dennis竟然没有满江红,opendoc的意义不用多说了吧 回复 更多评论# re: 中…

如何把握好 transition 和 animation 的时序,创作描边按钮特效

效果预览 在线演示 按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。https://codepen.io/comehope/pen/mKdzZM可交互视频教程此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。请用 chrome, safari, edge 打…

使用PHREAK算法实现Drools 6性能

Drools 6引入了新的惰性匹配算法。 该算法的详细信息已在之前的两个博客中介绍: RIP RETE时间获得PHREAKY 基于PHREAK堆栈的评估和向后链接 第一篇文章讨论了性能以及为什么算法的批处理和惰性方面难以比较。 “性能的最后一点。 通常,使用PHREAK的单…

02Data

1.数据从何而来 2.数据对象和属性类型 数据集合的类型 结构数据的重要特征 数据对象 属性 属性类型 数据属性的类型 离散 vs.连续属性 3.数据的(基本)统计描述 分布度量 代数度量 整体度量 度量数据的中心趋势 对称/偏斜数据 4.数据可视化 5.数据的相似…

PAT 1131 Subway Map

题目链接&#xff1a; https://pintia.cn/problem-sets/994805342720868352/problems/994805347523346432 思路&#xff1a; 说多了都是泪&#xff0c; Dijstra超时&#xff0c;采用dfs 利用map<pair<int,int>,int>&#xff0c;表示两个点和他们中间的地铁线号 每次…

专访Vue作者尤雨溪:Vue CLI 3.0重构的原因

1、为什么要对 Vue CLI 进行大规模修改&#xff1f; 尤雨溪认为旧版本的 Vue CLI 本质上只是从 GitHub 拉取模版&#xff0c;这种拉模版的方式有几个问题&#xff1a; &#xff08;1&#xff09; 在单个模版里面同时支持太多选项会导致模版本身变得极其复杂和难以维护&#x…

java秒杀时间与服务器时间_Javascript实现秒杀倒计时(时间与服务器时间同步)...

现在有很多网站都在做秒杀商品&#xff0c;而这其中有一个很重要的环节就是倒计时。关于倒计时&#xff0c;有下面几点需要注意&#xff1a;1.应该使用服务器时间而不是本地时间(本地时间存在时区不同、用户自行设置等问题)。2.要考虑网络传输的耗时。3.获取时间时可直接从AJAX…

Java 8 Friday Goodies:本地交易范围

在Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 &#xff0c;现在我们觉得是时候开始一个新的博客系列了…

Python3.5-20190501-廖老师的

python是一门解释型\脚本语言(和js特别像,如果同时学习js和python完全搅浑了.) 在运行py时候是一句一句翻译成cpu识别的机器码,所以速度比较慢.而C程序是运行前直接编译成CPU能执行的机器码&#xff0c;所以非常快. 学习python,就需要安装python.安装的同时会有一个解释器,就是…

如何用纯 CSS 创作一个冒着热气的咖啡杯

效果预览 在线演示 按下右侧的“点击预览”按钮在当前页面预览&#xff0c;点击链接全屏预览。https://codepen.io/zhang-ou/pen/xjXxoz可交互视频教程此视频是可以交互的&#xff0c;你可以随时暂停视频&#xff0c;编辑视频中的代码。请用 chrome, safari, edge 打开观看。…