效果预览

在线演示

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

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

可交互视频教程

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

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

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

源代码下载

本地下载

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

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

代码解读

定义 DOM,容器中包含 2 段文本:

  1. <div class="container">
  2. <p>Explorer</p>
  3. <p>Discovery</p>
  4. </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. p {
  2. color: white;
  3. font-size: 100px;
  4. font-weight: bold;
  5. font-family: sans-serif;
  6. text-transform: uppercase;
  7. text-align: center;
  8. }

让 2 段文本重叠:

  1. p {
  2. margin: 0;
  3. }
  4. p:nth-child(1) {
  5. transform: translateY(50%);
  6. }
  7. p:nth-child(2) {
  8. transform: translateY(-50%);
  9. }

定义动画,让 2 段文本交替显示:

  1. p {
  2. animation: show-hide 10s infinite;
  3. filter: opacity(0);
  4. }
  5. p:nth-child(1) {
  6. animation-direction: normal;
  7. }
  8. p:nth-child(2) {
  9. animation-direction: reverse;
  10. }
  11. @keyframes show-hide {
  12. 0% {
  13. filter: opacity(0);
  14. }
  15. 25% {
  16. filter: opacity(1);
  17. }
  18. 40% {
  19. filter: opacity(1);
  20. }
  21. 50% {
  22. filter: opacity(0);
  23. }
  24. }

增加字间距的变化效果:

  1. @keyframes show-hide {
  2. 0% {
  3. filter: opacity(0);
  4. letter-spacing: -0.8em;
  5. }
  6. 25% {
  7. filter: opacity(1);
  8. }
  9. 40% {
  10. filter: opacity(1);
  11. }
  12. 50% {
  13. filter: opacity(0);
  14. letter-spacing: 0.24em;
  15. }
  16. }

增加文本模糊效果:

  1. @keyframes show-hide {
  2. 0% {
  3. filter: opacity(0) blur(0.08em);
  4. letter-spacing: -0.8em;
  5. }
  6. 25% {
  7. filter: opacity(1) blur(0.08em);
  8. }
  9. 40% {
  10. filter: opacity(1) blur(0.24em);
  11. }
  12. 50% {
  13. filter: opacity(0) blur(0.24em);
  14. letter-spacing: 0.24em;
  15. }
  16. }

最后,为容器设置对比度滤镜:

  1. .container {
  2. filter: contrast(10);
  3. background-color: black;
  4. overflow: hidden;
  5. }

大功告成!

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

如何用纯 CSS 创作牛奶文字变换效果的更多相关文章

  1. 前端每日实战:33# 视频演示如何用纯 CSS 创作牛奶文字变换效果

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

  2. 33.纯 CSS 创作牛奶文字变换效果

    原文地址:https://segmentfault.com/a/1190000015037234 感想:transform: translateY(50% & -50%);  animatio ...

  3. 如何用纯 CSS 创作背景色块变换的按钮特效

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

  4. 如何用纯 CSS 创作阶梯文字特效

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

  5. 前端每日实战:38# 视频演示如何用纯 CSS 创作阶梯文字特效

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

  6. 前端每日实战:152# 视频演示如何用纯 CSS 创作一个圆点错觉效果

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

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

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

  8. 前端每日实战:53# 视频演示如何用纯 CSS 创作一个文本淡入淡出的 loader 动画

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

  9. 如何用纯 CSS 创作一种文字断开的交互特效

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

随机推荐

  1. endless(2018.10.25)

    这题就是个线段树合并板子. #include<cstdio> #include<algorithm> #include<cstring> using namespa ...

  2. hibernate添加帮助文档和源码

  3. H - F(x)

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...

  4. 最近工作用到压缩,写一个zip压缩工具类

    package test; import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream ...

  5. 解决Centos下SSH登录慢的问题

    产生这个问题的原因是:server的sshd会去DNS查找访问client IP的hostname,如果DNS不可用或者没有相关的记录就会花费大量的时间. 1.在server上/etc/hosts文件 ...

  6. OS 内存泄漏 导致 整个aix主机block

    问题 aix 主机 1.数据库主机使用vmstat 监控,隔几分钟 就是block 爆满. cpu 没有瓶颈,I/O 显示本地磁盘hdisk0和hdisk 1 是爆满. vmstat 同时显示大量pa ...

  7. 关于Mybatis的一点小记录(parameterType)

    1.Mybatis的parameterType有两个比较常用的,一个是类的对象,还有一个就是Map,然后取值的方法也很简单: 基本数据类型:#{参数} 获取参数中的值 复杂数据类型:#{属性名} ,m ...

  8. 学习中对input()的一些总结(raw_input()与input())

  9. dubbo属性配置

    一.覆盖策略 JVM启动-D参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口.XML次之,如果在XML中有配置,则dubbo.properties中的相应配置项无效.P ...

  10. [android][windows][使用HAXM加速模拟器][不使用SDK manager]

    网上找到了来使用HAXM,可惜我在sdk manager上下载不了,也使用过勾上[fetching...]那个选项,依然无效. 所以自己手动下载来安装和使用. 具体的教程可以参考http://blog ...