时间:2022-09-12来源:www.pcxitongcheng.com作者:电脑系统城
通过CSS,无法实现像 JS 那样一个字一个字的绘制在页面上,那不如就换一个思路,让容器宽度成为动画的主体,让文字逐渐显示出来。具体来说,最开始容器的宽度是0,随着动画的推进,一个字一个字的扩张到它应用的宽度。(需要注意,该方案仅适用于单行文本)
按照我们预想的思路,很容易完成下述代码。
1 2 3 4 5 6 7 8 9 10 11 12 |
@keyframes typing { from { width : 0 ; } } h 1 { width : 188px ; animation: typing 8 s; white-space : nowrap ; overflow : hidden ; } |
但是从实现效果上看,并不是那么理想,我们需要的动画效果是逐字呈现而不是这样的平滑显示。
对于这个问题,很显然,我们会想到使用 steps()
来修复,但是具体需要分多少步又是摆在我们面前的另一个难题。
要解决这个问题,就需要说到 ch
这个 CSS 中基本用不到的长度单位,它代表元素所用字体中“0”这一字形的宽度,如果使用的是等宽字体的话,那么“0”字形的宽度和其他所有字形的宽度是一样的,所以很容易想到要解决上述问题,其实只要:
width
设置为该元素中文字的个数animation
的 steps()
也设置为元素的个数1 2 3 4 5 6 7 8 9 10 11 12 13 |
@keyframes typing { from { width : 0 ; } } h 1 { font-family : "Cascadia Code" , Menlo, Monaco, "Courier New" , monospace ; width : 12 ch; animation: typing 8 s steps( 12 ); white-space : nowrap ; overflow : hidden ; } |
已经基本实现我们想要的效果了,最后只要加上一个闪烁的光标即可。可以通过使用伪元素生成光标,并通过 opacity 属性来实现闪烁效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@keyframes caret { 50% { opacity: 0 ; } } h 1: :after { content : "" ; position : absolute ; right : 0 ; width : 2px ; top : 6px ; bottom : 6px ; background : #000 ; animation: caret 1 s steps( 1 ) infinite; } |
到此这篇关于纯CSS打字动画的实现示例的文章就介绍到这了
2023-03-06
css3鼠标滑过实现动画线条边框2023-03-06
css scroll-snap控制滚动元素的实现2023-03-06
CSS实现多层嵌套列表自动编号的示例代码传统的灰色纯色边框你是不是觉得太难看了?你是否想设计一些精美的边框,例如渐变、圆角、彩色的边框?那你来对地方了,本文将介绍如何用纯CSS就能实现具有渐变和圆角的彩色边框...
2023-03-06
今天给大家带来一个如何实现圆角三角形的方案,这个方案虽然可以实现,但是也是借助拼凑等方式来实现的,假如想一个div来实现圆角三角形,还是比较困难的。之前文章讲了如何实现对话框,里面介绍了三角形的实现方式。今天讲讲...
2023-03-06