效果预览

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

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;
}

大功告成!

最新文章

  1. c++ 解包tar
  2. 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication
  3. 在SUBLIME TEXT中安装SUBLIMELINTER进行JS&amp;CSS代码校验
  4. WORD2003电子签名插件(支持手写、签章)
  5. [Jquery]tab页面切换效果
  6. lintcode:合并排序数组 II
  7. labview 中activex的初步使用方法
  8. STL总结之queue, priority_queue, stack
  9. 使用JUnit单元测试入门
  10. socket用法
  11. Linux常用命令汇总-速查
  12. CoreJavaE10V1P3.4 第3章 Java的基本编程结构-3.4 变量
  13. Linux学习--&gt;linux系统在移动硬盘的安装
  14. Cocos2D:塔防游戏制作之旅(十)
  15. 执行shell脚本出错&#39;\r&#39;: command not found
  16. php结合layui前端实现 多图上传
  17. The Microsoft Distributed Transaction Coordinator (MS DTC) has cancelled the distributed transaction.
  18. 后台管理系统之系统操作日志开发(Java实现)
  19. ABP框架系列之三十八:(NHibernate-Integration-NHibernate-集成)
  20. [EXP]Cisco RV110W - Password Disclosure / Command Execution

热门文章

  1. [luogu]P1168 中位数[堆]
  2. Photon学习(一)——Photon Networking Free网络组件学习
  3. [CSP-S模拟测试]:Walk(树的直径+数学)
  4. CSS3中哪些新属性—阴影、文本省略(1)
  5. LintCode之左填充
  6. Jsoup代码示例、解析网页+提取文本
  7. Win32下session和window station以及desktop一些介绍和应用
  8. Jenkins使用三:管理slave节点(配置SSH公钥和私钥)
  9. 21.线程,全局解释器锁(GIL)
  10. sed删除注释行和空行