我想执行以下操作:我想在 HTML/JavaScript(jQuery/jQuery UI,如果需要)中具有打字机效果。关于如何在字符串上创建打字机效果的示例有很多(例如 this one )。我想做类似的事情,但要使用完整的 HTML 字符串,不应将其输入,而应将其正确插入到网页中。
示例字符串:
<p>This is my <span style='color:red;'>special string</span> with an <img src="test.png"/> image !</p>
这个字符串应该用打字机动画打出来。 “特殊字符串”的颜色应该是红色的,即使在打字时也是如此,图像应该出现在“an”这个词之后和“image”这个词之前。现有解决方案的问题在于,它们将标记逐个字符地插入到网页中,这导致在本例中键入“特殊字符串”时未关闭。我考虑过使用 jQuery 解析字符串并遍历数组,但我不知道如何处理嵌套标签(如本例中的 p 和 span)
我认为你真的不需要插件来做这些事情,我举了一个简单的例子:
html:
<div id="typewriter"></div>
js:
var str = "<p>This is my <span style='color:red;'>special string</span> with an <img src='http://placehold.it/150x150'> image !</p>",
i = 0,
isTag,
text;
(function type() {
text = str.slice(0, ++i);
if (text === str) return;
document.getElementById('typewriter').innerHTML = text;
var char = text.slice(-1);
if( char === '<' ) isTag = true;
if( char === '>' ) isTag = false;
if (isTag) return type();
setTimeout(type, 80);
}());
这是关于 jsfiddle 的演示