加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

jQuery实现的打字机字幕结果,可配置打字速率

发布时间:2018-08-26 03:17:38 所属栏目:业界 来源:站长网
导读:记得早年看电视的时辰,电视里无意会呈现笔墨一个紧接一个呈现,陪伴着打字机滴答滴答声音的 字幕 结果,经常好奇着实现结果。本日周末,没课就趁便想了想用javascript实现打字机结果。用了一个小时阁下,就做出来,代码不外几十行。 先说下思绪:一些典范的
记得早年看电视的时辰,电视里无意会呈现笔墨一个紧接一个呈现,陪伴着打字机滴答滴答声音的字幕结果,经常好奇着实现结果。本日周末,没课就趁便想了想用javascript实现打字机结果。用了一个小时阁下,就做出来,代码不外几十行。

先说下思绪:一些典范的嵌套笔墨的html容器标签可所以这样:

1 <font>一行嵌套在font标签里的笔墨</font>
2 <p>一段嵌套在p标志的笔墨</>
3 <div>一段嵌套在div标志里的笔墨</div>

因此,我们起主要取得容器内部内容。这可以通过给容口赋id,然后用jquery的$("#id").html()要领获取到,并将获取到的内容赋与一字符串变量。接着设一偏向向后,步长为1的游标,逐字判定,如果字符"<”跳过,这样做的目标是由于某些嵌套行使标签的环境存在,譬喻:

1 <font>嵌套行使<font color="red">标签</font>,这种环境下
2 应该跳过内层的标签,由于内层标签只是提供了一种示意情势</font>

在这种环境下应该跳过内层的标签,由于它们只是提供了一种示意情势,不属于正文。以是此时游标应跳到下一个响应的">"字符后一位的位置。最后我们行使substring()要领截取,工具是之前吸取了标签内部内容的字符串变量,截取内容为起始位置到当前游标地址位置之间的一段文本。这样就能使文本内容逐渐变长。

虽然了,由于要的是打字机结果,以是我们可以行使字符"_"来模仿一个光标。用字符串"_"和""来模仿光标的闪烁结果。这可以通过行使游标与1按位与来实现,由于游标向后游走的特征使得按位与的功效在0与1间调动,故而光标的闪烁结果也出来了,然后将光标附加在当前表现的文本内容尾部即可。

又由于要逐字判定字符范例,以是行使setInterval()要领作为按时器即可,这样做的甜头还可以让我们自界说一个打字机的速率。如下图中typewriter要领的名为speed的参数所示。当游标移动到内部内容的竣事办事,不要忘了挪用clearInterval()消除按时器。

整个函数的代码如下:

 1 (function(a) {
2 a.fn.typewriter = function(speed) {
3 this.each(function() {
4 var d = a(this),
5 c = d.html(),
6 b = 0;
7 d.html("");
8 var e = setInterval(function() {
9 var f = c.substr(b, 1);
10 if (f == "<") {
11 b = c.indexOf(">", b) + 1
12 } else {
13 b++
14 }
15 d.html(c.substring(0, b) + (b & 1 ? "_": ""));
16 if (b >= c.length) {
17 clearInterval(e)
18 }
19 },
20 speed)
21 });
22 return this;
23 }
24 })(jQuery);

用法很简朴,举譬喻下:

1 <p id="p1">一段嵌套在p标志的笔墨</p> 
2 <p id="p2">嵌套在p标志里的<font>标志</font></p>

在html页面先引用jquery库,再引入typewriter js文件。然后挪用要领:

1 $("p1").typewriter(100); 
2 $("p2").typewriter(200);

即可。

值得留意的是:假如文本内容包罗字符"<"和">",则表现不出来,由于要了解将它们看成html标签而跳过。

请看结果:


提醒:可修改儿女码再运行!

来历:http://tudas.cnblogs.com/

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读