纯CSS打字动画的实现示例

在一些技术网站中,经常会看到这样一种展示效果:逐个显示一段文本中的字符,模拟出一种打字的效果。通过这种方式可以显著地提升网页设计感。
在大部分应用中,都是通过使用 JS 脚本实现该方案,虽然效果很好,但是对于使用 JS 来操作出表现层的展示,总感觉有点奇怪,所以尝试下只使用 CSS 来实现我们的打字动画~
通过CSS,无法实现像 JS 那样一个字一个字的绘制在页面上,那不如就换一个思路,让容器宽度成为动画的主体,让文字逐渐显示出来。具体来说,最开始容器的宽度是0,随着动画的推进,一个字一个字的扩张到它应用的宽度。(需要注意,该方案仅适用于单行文本)
按照我们预想的思路,很容易完成下述代码。
@keyframes typing { from { width: 0; } } h1 { width: 188px; animation: typing 8s; white-space: nowrap; overflow: hidden; }
但是从实现效果上看,并不是那么理想,我们需要的动画效果是逐字呈现而不是这样的平滑显示。
对于这个问题,很显然,我们会想到使用 steps()
来修复,但是具体需要分多少步又是摆在我们面前的另一个难题。
要解决这个问题,就需要说到 ch
这个 CSS 中基本用不到的长度单位,它代表元素所用字体中“0”这一字形的宽度,如果使用的是等宽字体的话,那么“0”字形的宽度和其他所有字形的宽度是一样的,所以很容易想到要解决上述问题,其实只要:
- 将元素文字设置为等宽字体(实际上,应用打字动效的文字都场景大多是为展示代码的形式,大部分情况下也都是使用都等宽字体)
- 元素的
width
设置为该元素中文字的个数 - 同样,将
animation
的steps()
也设置为元素的个数
@keyframes typing { from { width: 0; } } h1 { font-family: "Cascadia Code", Menlo, Monaco, "Courier New", monospace; width: 12ch; animation: typing 8s steps(12); white-space: nowrap; overflow: hidden; }
已经基本实现我们想要的效果了,最后只要加上一个闪烁的光标即可。可以通过使用伪元素生成光标,并通过 opacity 属性来实现闪烁效果:
@keyframes caret { 50% { opacity: 0; } } h1::after { content: ""; position: absolute; right: 0; width: 2px; top: 6px; bottom: 6px; background: #000; animation: caret 1s steps(1) infinite; }
到此这篇关于纯CSS打字动画的实现示例的文章就介绍到这了,更多相关CSS打字动画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
相关文章
- 本文主要介绍了纯CSS打字动画的实现示例,逐个显示一段文本中的字符,模拟出一种打字的效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价2022-07-25
新的CSS 伪类函数 :is() 和 :where()示例详解
这篇文章给大家介绍了新的CSS 伪类函数 :is() 和 :where()示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下2022-07-25- 今天在做项目的时候遇到一个关于布局的问题, 就是 flex: 1,那么flex:1是什么意思,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的2022-07-22
- 本文主要介绍了CSS子盒子水平和垂直居中的五种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习2022-07-19
- 本文主要介绍了css让页脚保持在底部位置的四种方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习2022-07-18
- z-index 似乎是一个很简单的属性,你给它设置哪个值,元素就会位于 z 轴的哪个位置。但它实际上并没有我们想象的这么简单,这个属性背后是一系列决定元素所在层级的规则,2022-07-13
- 本文主要介绍了纯CSS实现一个简单步骤条的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习2022-07-13
- 这篇文章主要介绍了CSS中使用grid布局实现一套模板多种布局,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-07-11
- 本文主要介绍了如何解决flex文本溢出问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-07-11
- 本文主要介绍了CSS实现背景图片全屏铺满自适应的3种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起2022-07-06
最新评论