【发布时间】:2013-11-15 00:47:40
【问题描述】:
我有一个带有文字的<div>。
我希望 <div> 中的文字一次出现在一个字符的页面上:
可接受的替代方案:一次只做一个单词,以避免 HTML 实体出现问题以及由于软连字符而导致单词跳跃。
如果用户点击<div>,它应该取消动画并立即显示全文。
简而言之,我想模仿一个在日式冒险游戏中经常出现的动画。 (我认为这有时被称为打字机或电传打字机效果。)这是一个很好的例子:
http://www.youtube.com/watch?feature=player_detailpage&v=SasgN0lim7M#t=418
显然,我可以使用 JavaScript 编写动画脚本——只需设置一个计时器并一个接一个地附加字母(或单词)。
但是有没有可能在现代浏览器中使用 CSS 来做我需要的事情? (当然,我至少需要用 JS 更改 onclick 中的元素类,但没关系。)
更新:澄清字符与字母以及 HTML 实体的问题:
我的文本中到处都是 HTML:
Lo­rem <i>ip­sum</i>.
将文本附加到 innerHTML 一个字符一个字符的幼稚方法是行不通的:
【问题讨论】:
-
我认为最好的方法是做你已经建议的 - 带有计时器和附加字母的 JS
-
嗯,有一件事是,浏览器比我写的 JS 代码更清楚什么是字母,什么不是。
-
只做每个字符而不是一个字母,我认为这是一种正常的体验
-
不,CSS 无法实现逐字符动画。您只能为文本的边界矩形设置动画以使其增长,但这不会给出typewriter effect。
-
如果你想通过 css 完成,那你为什么要标记 javascript?
标签: javascript html css animation