讲师中心 微信公众号
AI工具推荐 视频效率加速

如何引入CSS样式实现打字机动画_利用ch单位与steps函数

冬明酱_7316

冬明酱_7316

发布时间:2026-06-16 17:23:23

|

218人浏览过

|

来源于php中文网

原创

ch单位最适合打字机动画,因其等于当前字体中“0”的宽度,等宽字体下每字符占1ch,确保逐字精准显现;而em受字符形状影响、px脱离字体上下文。

如何引入css样式实现打字机动画_利用ch单位与steps函数

为什么 ch 单位比 em 或 px 更适合打字动画

因为 ch 表示“0”字符的宽度(等宽字体下 ≈ 一个字符宽度),动画用它做 width 过渡,能精准匹配逐字显示节奏;而 em 依赖字体大小、px 无法响应字体缩放或不同字体宽度变化,容易卡顿或错位。

实际使用时需确保父容器使用等宽字体(如 font-family: monospace, 'Courier New'),否则 ch 值会浮动——比如在系统默认的非等宽字体下,1ch 可能等于 “w” 的宽度而非 “i”,导致动画跳帧。

  • 必须设置 white-space: nowrap 防止换行打断动画
  • 推荐搭配 overflow: hidden 隐藏未显现部分
  • 避免对中文混排文本直接用 ch 控制宽度——中文字宽不等于 1ch,此时应改用 steps(n, end) 配合字符数手动计算

steps() 函数里 end 和 start 到底该选哪个

打字效果必须用 steps(n, end):它让动画在每步结束时才跳变,视觉上是“字一个一个弹出”;若用 start,第一帧就显示全部内容,第二帧才开始删减,完全不符合预期。

参数 n 要等于文本字符数(注意空格、标点都算);常见错误是硬写死 steps(10, end) 却没校验字符串长度,导致动画提前结束或卡住最后一字。

CSS婚礼策划服务机构宣传网站模板
CSS婚礼策划服务机构宣传网站模板

CSS婚礼策划服务机构宣传网站模板是一款适合提供婚礼策划和婚庆服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载

立即学习“前端免费学习笔记(深入)”;

  • 动态内容需用 JS 计算:element.textContent.length 获取真实字符数
  • 遇到 emoji(尤其是多码点 emoji,如 ?‍?)时,.length 可能误判,建议用 [...str].length 处理
  • CSS 中无法动态传参,所以静态文本可直接写死,动态文本必须靠 JS 注入对应 steps() 值

完整 CSS 打字动画的关键声明顺序不能乱

动画生效依赖三要素叠加:宽度从 0 拉到目标值 + steps() 分帧 + monospace 字体锚定 ch。任意一环缺失都会失败。

.typing {
  font-family: monospace;
  white-space: nowrap;
  overflow: hidden;
  border-right: 2px solid #000; /* 可选光标 */
  width: 0;
  animation: type 3s steps(12, end), blink 0.75s step-end infinite;
}
@keyframes type {
  to { width: 12ch; }
}
@keyframes blink {
  50% { border-color: transparent; }
}
  • width: 0 必须写在动画前,否则初始状态不是隐藏态
  • @keyframes 中 to { width: 12ch; } 的数值必须和 steps(12, end) 严格一致
  • 多个动画用逗号分隔,但 steps() 只作用于紧邻它的那个动画(这里是 type),别误以为它会影响 blink

IE 和旧版 Safari 对 ch 与 steps() 的兼容性怎么兜底

IE 完全不支持 ch 单位,Safari ≤ 9 不支持 steps() 中的第二个参数(即 end)。真要兼容,得降级为 JS 驱动的字符循环 + setTimeout,或者用媒体查询隔离:

@supports (width: 1ch) and (animation-timing-function: steps(1, end)) {
  .typing { /* 启用 CSS 方案 */ }
}
@supports not (width: 1ch), (animation-timing-function: steps(1, end)) {
  .typing { /* 降级为 visibility: hidden + JS 显示 */ }
}
  • 不要试图用 calc(1em * n) 模拟 ch——不同字体下 1em 宽度波动太大
  • 移动端 iOS Safari 10+ 已支持完整 steps(n, end),但某些安卓 WebView 仍只认 steps(n)(等价于 steps(n, end))
  • 真正难搞的是中英文混排且字体不固定场景:此时 ch 失效,只能放弃纯 CSS 方案

实际项目里最常被忽略的,是字体加载完成前的闪动——@font-face 加载慢会导致动画开始时用回默认字体,ch 值突变。得用 font-display: optional 或监听 document.fonts.load() 延迟启动动画。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

4876

2023.06.15

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

1057

2023.07.27

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1918

2023.07.28

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

3746

2023.08.01

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

7645

2023.08.10

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

6491

2023.08.10

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

2157

2023.08.21

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

3091

2023.08.22

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS教程
CSS教程

共754课时 | 98.1万人学习

HTML+CSS 快速上手
HTML+CSS 快速上手

共95课时 | 19.8万人学习

CSS3-瞬间提升网页逼格的利器
CSS3-瞬间提升网页逼格的利器

共56课时 | 18.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn