当前位置:首页 > 建站分享 > 正文内容

纯 js 实现打字效果

lujun3年前 (2022-01-04)建站分享552
看到有人需要,就把主题里面的代码整理了出来
代码就在下面具体怎么使用自己慢慢琢磨吧,挺简单的东西 并不复杂
首先就 就这么几个属性
classtxt-rotate
data-rotate 眼线是的内容 JSON 格式
data-period 显示完每一段的 延时 单位毫秒

又补充了一下 添加 jQuery 兼容 IE8 (本站就不用看试了,懒得改了)
代码如下:
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8"/><script src="http://api。asilu.com/cdn/jquery.js"></script> <h1>打字效果演示</h1><p><span class='txt-rotate' data-rotate='["测试第 1 段", "测试第 2 段", "测试第 3 段", "测试第 4 段"]' data-period='300' >为了保险这里填写 默认文本</span> &nbsp; </p><h4 class='txt-rotate' data-rotate='["有小问题的话可以在QQ群:53571807 里询问,没必要加好友的,好友一多就分不清谁是谁了 ^_^", "终于回来了。。。", "我给你写五万字都行,我 我这不是怕您一读就读成十万字了吗就"]'>为了保险这里填写 默认文本</h4>  <script>var TxtRotate = function(el, toRotate, period) {  this.toRotate = toRotate;  this.el = el;  this.loopNum = 0;  this.period = period || 2000;  this.txt = "";  this.tick();  this.isDeleting = false};TxtRotate.prototype.tick = function() {  var i = this.loopNum % this.toRotate.length;  var fullTxt = this.toRotate[i];  if (this.isDeleting) {    this.txt = fullTxt.substring(0, this.txt.length - 1)  } else {    this.txt = fullTxt.substring(0, this.txt.length + 1)  }  this.el.innerHTML = '<span class="wrap">' + this.txt + "</span>";  var that = this;  var delta = 150 - Math.random() * 100;  if (this.isDeleting) {    delta /= 2  }  if (!this.isDeleting && this.txt === fullTxt) {    delta = this.period;    this.isDeleting = true  } else {    if (this.isDeleting && this.txt === "") {      this.isDeleting = false;      this.loopNum++;      delta = 500    }  }  setTimeout(function() {    that.tick()  },  delta)}; // 以下方法 可二选一,看个人需要 /* // 1.  支持 getElementsByClassName 的情况下使用 (不兼容 IE8-)var elements = document.getElementsByClassName("txt-rotate");if (elements) {  for (var i = 0; i < elements.length; i++) {    var toRotate = elements[i].getAttribute("data-rotate");    var period = elements[i].getAttribute("data-period");    if (toRotate) {      new TxtRotate(elements[i], JSON.parse(toRotate), period)    }  }}*/ // 2.  不支持 getElementsByClassName 的情况 (兼容 IE8, 需要 jQuery)$('.txt-rotate').each(function(){  a = $(this);  toRotate = a.data('rotate');  period = a.data('period');  if (toRotate) {    new TxtRotate(this, toRotate, (period ? period : 5000))  }})</script>
运行代码

本文出自简爱博客


扫描二维码推送至手机访问。

版权声明:本文由5020工作室发布,如需转载请注明出处。

本文链接:http://5020.work/?id=17

分享给朋友:

相关文章

Jsdelivr 国内CDN加速替换方法

Jsdelivr 国内CDN加速替换方法

Jsdelivr国内凉了,好多网站和服务出现了大花脸,于是用北京bgp机器进行反代。国内CDN分发于是有了这个服务,服务器及CDN均流量无限,G口起步,不设CC防御,可以随心使用。那些用gh图床的也可以直接接入了使用方式:替换「//cdn....

玩客云宝塔面板安装到外接硬盘

玩客云宝塔面板安装到外接硬盘

玩客云内置的存储空间非常小,安装宝塔后再安装几个环境就满了,还想多安装几个都安装不了只要将宝塔面板装到外接硬盘,想装多少环境、多大的数据库文件都可以放下啦已安装宝塔如果玩客云已经完成了安装宝塔面板,将其移动到外部硬盘1、博客有写过玩客云如何...

PHP为任意页面设访问密码,控制登录

PHP为任意页面设访问密码,控制登录

把下面的代码存为php文件,下面的整段代码是验证过程,然后在你入口页进行调用例如命名为MkEncrypt.php,那么在入口页进行require_once('MkEncrypt.php');然后设置密码为MkEncrypt(...

关于jsDelivr开源免费CDN加速服务国内访问异常的解决方法

关于jsDelivr开源免费CDN加速服务国内访问异常的解决方法

jsDelivr无法访问解决方法2022年5月中旬左右国内最大的免费cdn网络分发加速,jsDelivr出现了无法访问的情况,大概率是域名cdn.jsdelivr.net被墙了,现在jsDelivr已经启用了临时备用域名,已经调用了远程js...

M3U8文件和TS切片加了Referer验证的PHP代理示例

M3U8文件和TS切片加了Referer验证的PHP代理示例

主要使用 PHP 进行流量转发,需要消耗自己 PHP 服务器的带宽和流量。链接例子:https://rtmlive06.secureswiftcontent.com/rtmchannel/06-manifest.m3u8坛友一(kof97z...

文件外链网站推荐catbox

前言前几天看到一个国外网站非常有意思,它就是猫箱(译名),原名catbox猫箱:https://catbox.moe/猫箱catbox这是一个文件外链网站,就是上传一个文件,可以获得它的直链地址,别人访问这个地址就能获取文件内容比如大家想要...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。