问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

使用JS实现一个打字机字符输出效果

发布网友 发布时间:2022-04-29 21:17

我来回答

2个回答

懂视网 时间:2022-05-14 21:25

目录

  • 目录

  • 随机速度的打字机效果

  • 效果

  • 代码

  • 引用到的知识点

  • 利用定时器触发线程

  • 利用事件触发线程

  • 线程

  • 随机数

  • 快捷链接


  • 随机速度的打字机效果

    效果

    20180801160450666.gif

    代码

    html部分

    <!DOCTYPE html><html lang="en"><head>
     <meta charset="UTF-8">
     <title>typeWriter</title>
     <style type="text/css">
     h2,h5,#tooltipMsg,p{  white-space: nowrap; }
     td{  border: 1px solid #ccc;  height: 50px;  text-align: center;  font-size: 10pt;  padding: 2px; }
     </style></head><body>
     <h2>实现打字机效果</h2>
     <p id="typeWriterEffect"></p>
     <p id="typeWriterEffect2"></p>
     <script type="text/javascript" src="typeWriter.js"></script></body></html>

    js部分

    window.onload=function(){
     var twArr = [],//打字的数据库队列
     twing = false,//用于判断打字机的线程是否开启
     twID = [],//打字机线程ID
     twTime = 10,//用于定时调用的时间
     obj1 = document.getElementById("typeWriterEffect"),
     obj2 = document.getElementById("typeWriterEffect2"),
     twEffect = function(e,str){//添加显示的元素
      twArr.push({  "context":e,//目标元素上下文
      "str":str,//显示的元素
      "lening":0,//截取的进度
      "maxL":str.length//最大的进度
      })
     },
     closeTw = function(){//关闭定时调用
      clearTimeout(twID);//关闭线程
      twing = true;
     },
     twUi = function(){//定时调用
      var i = 0,
      L = twArr.length,
      eing = null;  for (var i = 0; i < L; i++) {
       eing = twArr[i]//效果同时加载多对象数组
       eing.lening++;   if (eing.lening>eing.maxL) {//不设置关闭线程则打字效果循环
       eing.lening = 0;
       }
       eing.context.innerHTML = eing.str.substring(0,eing.lening)+"_";
      }  var num = Math.floor(Math.random()*50+1);//1-50个随机数
      console.log(num);
      twID = setTimeout(twUi,num*twTime);//开启线程
      if(twID==eing.maxL){//到达最后关闭线程
       closeTw();
      }
     }, //开启定时调用,参数为设置定时调用的时间
     startTw = function (twTime) {
      if (!twing) {//如果没有开启才开启
      twTime = twTime;
      twUi();//开始定时调用
      }
     }; //设置内容对象数组
     twEffect(obj1,"这就是打字机效果,打字速度随机哦!!!!!"); //开始调用线程
     startTw(twTime);
    }

    引用到的知识点

    线程

    js的单线程(single threaded)和异步(asynchronous)的,但是并不互相矛盾,js的宿主环境(比如浏览器,Node)是多线程的,宿主环境通过某种方式使得js具备了异步的属性。

    setTimeout(function(){
     console.log(time is out);
    },50);

    有的人就会问到定时器setTimeoutsetinterval 的区别:
    setTimeout(表延时时间)在执行时,是在载入后延迟指定时间后只去执行一次表达式,
    而setInterval(表交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式

    利用定时器触发线程

    (缺点:耦合度高)

    function f1(callback){setTimeout(function(){
     // f1 的代码
     callback();
    },0);
    }
    f1(f2);

    利用事件触发线程

    (缺点:可以通过绑定不同的事件,实现不同的回调函数,如果应用这种方法过多,不利于阅读程序)

    $f1.on('custom',f2); //这里绑定事件以jQuery写法为例function f1(){setTimeout(function(){
     // f1的代码
     $f1.trigger('custom');
    },0);
    }

    随机数

    Math.random()取0-1随机数
    同理拓展例子:
    Math.random()*10取0-10随机数(包括一大堆小数点)
    Math.random()*10+1取1-10随机数
    Math.random()*10+2取2-10随机数
    Math.random()*899+100取100-999随机数
    其中常用:Math.floor()只取随机数整数部分

    相关文章:

    JS实现的打字机效果完整实例

    JS实现的打字机效果示例代码

    相关视频:

    实现全屏切换效果实战视频教程

    热心网友 时间:2022-05-14 18:33

    <!DOCTYPE html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>打字机效果</title>
    <script>
    window.onload = function (){
    var text = document.getElementById('text');
    var str = '使用JS实现一个打字机字符输出效果使用JS实现一个打字机字符输出效果使用JS实现一个打字机字符输出效果使用JS实现一个打字机字符输出效果';
    var arr = [];
    for(var i=0;i<str.length;i++){
    arr.push(str[i])
    }
    var text1 = '';
    var num = 0;
    var timer = setInterval(function (){
    if(num < arr.length){
    text1 += arr[num];
    text.innerHTML = text1
    num++;
    } else {
    clearInterval(timer)
    }
    },200)
    }
    </script>
    </head>
    <body>
    <div id='text'></div>
    </body>
    </html>

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    离过年还有2个月,是找工作,还是等过年? 还有两个多月就过年了,我是现在找工作呢还是过完年再找呢?现在找工作是... i57300u处理器属于什么水平 i5-7300u处于什么水平 国家线2024考研分数线是多少 电脑软件使用记录如何查看电脑当天的使用记录 在哪里查电脑最近使用情况怎么查看笔记本电脑的使用记录 英语题急求 ...以前都是以1MB/s速度下载,但是现在都不到300K/s,是不是WiFi路由器... 我家4兆的网线1台电脑可是我今天测网速时却只有16KB/S 这是为什么啊 html中的打字效果 js网页打字机效果代码? javascript文字特效,实现任意文字串字体由小变大,再由大变小。_百度... ...像打字一样一个一个出来是怎么做的? JAVAscript的,请高手帮忙,_百度... 打字效果的文字特效用JavaScript怎么写啊? 淘宝匿名购买 包裹寄到后会写着淘宝ID吗 油炸汉堡用的是油炸专用酵母粉吗? 淘宝上匿名购买时藏起来的是淘宝昵称还是淘宝会员名?真实姓名还看得到不?取件的时候有影响吗 淘宝匿名购买运单上会显示姓名,手机号之类的吗? 油炸食品做勾芡需要用酵母粉吗 在淘宝上匿名购买商品。收到快件时,快件会显示我买的商品名和寄出方 大亮每步长54厘米 炸酥肉可以放酵母粉吗 淘宝匿名购买是指什么?会影响收货地址的名字吗? 用油炸专用酵母粉能做油条吗 大雪后一天,小敏和爸爸 共同圆型的花圃的周长,他俩的启点和走的方向完全相同,小敏每步长48厘米,爸爸每 油炸专用酵母粉和蒸馒头用的孝母粉一样吗? 昨晚在淘宝买了几件衣服,匿名购买寄过来的快递单会有我的名字吗??? 在支付宝匿名购买水果,朋友收到货的时候上面发货人是我的还是卖家的?单子上会不会把我的支付宝账号写上 《航拍中国》黑龙江地理知识点是什么? 关于JavaScript实现打字机效果输出文本的问题 javascript的特效如何用? JS打字特效带光标闪烁。 求网页特效代码 javascript逐字输入长文本,怎么实现 ...人把快递箱里的防撞泡沫随便扔,这属于什么垃圾啊? javascript的“特效”也太难学了吧!有高人能提供一下学习经验么?_百度... ASP VBscript怎么样实现打字效果呢? 求一个js特效,文字向上飞 手机刷过机了,但是微博微信图片打不开,显示储存卡已拔出,图片暂时不可用,怎么办 你好,为什么我的微博图片都打不开? 微博 图片 打不开 为什么QQ空间照片上传和微博都打不开 新浪微博上发表的图片都看不了是怎么回事啊?但是能显示好友头像可以看视频但是发表的图片打不开! 金山区微公交 长期租赁 怎么充电 微公交充电怎么充下雨怎么办 微公交2坐的能在外面充电桩充电吗? 电脑开机出现花屏乱码该怎么解决? 微公交要怎么充电呀,要办卡是嘛吗 电脑突然开机显示乱码?