js实现键盘自动打字效果


Posted in Javascript onDecember 23, 2016

最近在网上看到一个字符逐个出现的打字效果,觉得挺有趣的,想一想基本实现思路就是设置一个定时器逐然后逐个向容器中添加字符,于是就基于jQuery写了一个简单版的。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>AutoType</title>
</head>
<body>
<div id="autotype"></div>
<script src="//cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
<script>
  $.fn.autotype = function (str, speed) {
    var self = this,
        defaultStr = '<p>我希望有个如你一般的人.</p><br>'
             +'<p>如山间清爽的风.</p><br>'
             +'<p>如古城温暖的光.</p><br>'
             +'<p>从清晨到夜晚.</p><br>'
             +'<p>由山野到书房.</p><br>'
             +'<p>只要最后是你,就好.</p><br>',//将要添加的元素的默认内容
        defaultSpeed = 100,
        str = str || defaultStr,
        speed = speed || defaultSpeed,
        index = 0,
        timer = setInterval(function () {
          var current = str.substr(index, 1);
          if (current == '<') {
            index = str.indexOf('>', index) + 1;
          } else {
            index++;
          }
          self.html(str.substring(0, index) + ( (index & 1) && (index != str.length) ? '_' : ''));
          if (index >= str.length) {
            clearInterval(timer);
          }
        }, speed);
  };
  $("#autotype").autotype();
</script>
</body>
</html>

本人才疏学浅,总觉得自己写的方法比较简陋,于是搜索了一波资料,发现有个不错的jQuery插件Typed.js。

Type.js的基础使用

<script src="jquery.js"></script>
<script src="typed.js"></script>
<script>
  $(function(){
    $(".element").typed({
      strings: ["First sentence.", "Second sentence."],
      typeSpeed: 0
    });
  });
</script>
...

<span class="element"></span>

插件为用户定制了许多默认设置与效果

<script>
  $(function(){
    $(".element").typed({
      strings: ["First sentence.", "Second sentence."],
      // Optionally use an HTML element to grab strings from (must wrap each string in a <p>)
      stringsElement: null,
      // typing speed
      typeSpeed: 0,
      // time before typing starts
      startDelay: 0,
      // backspacing speed
      backSpeed: 0,
      // shuffle the strings
       shuffle: false,
      // time before backspacing
      backDelay: 500,
      // loop
      loop: false,
      // false = infinite
      loopCount: false,
      // show cursor
      showCursor: true,
      // character for cursor
      cursorChar: "|",
      // attribute to type (null == text)
      attr: null,
      // either html or text
      contentType: 'html',
      // call when done callback function
      callback: function() {},
      // starting callback function before each string
      preStringTyped: function() {},
      //callback for every typed string
      onStringTyped: function() {},
      // callback for reset
      resetCallback: function() {}
    });
  });
</script>

具体用法可以看看GitHub地址,带注释的源码400多行,不算复杂。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jquery 问答知识整理
Feb 11 Javascript
使用JS进行目录上传(相当于批量上传)
Dec 05 Javascript
JavaScript Date对象 日期获取函数
Dec 19 Javascript
JavaScript中的稀疏数组与密集数组[译]
Sep 17 Javascript
详谈jQuery中的this和$(this)
Nov 13 Javascript
JavaScript 异常处理 详解
Feb 06 Javascript
js实现仿qq消息的弹出窗效果
Jan 06 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
js实现精确到秒的日期选择器完整实例
Apr 30 Javascript
JavaScript时间戳与时间日期间相互转换
Dec 11 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
Sep 14 Javascript
使用Vant完成Dialog弹框案例
Nov 11 Javascript
Angularjs实现分页和分页算法的示例代码
Dec 23 #Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
Dec 23 #Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 #Javascript
JS敏感词过滤代码
Dec 23 #Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 #Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 #Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 #Javascript
You might like
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
Python 除法小技巧
2008/09/06 Python
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
python实现磁盘日志清理的示例
2020/11/05 Python
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
物业管理个人自我评价
2013/11/08 职场文书
统计岗位职责
2014/02/21 职场文书
初中班主任评语
2014/04/24 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
夫妻吵架保证书
2015/05/08 职场文书
《青山不老》教学反思
2016/02/22 职场文书
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL