js 实现打字效果的js库 typed.js

最近在做一些好玩的小玩意。研究了一下这个库 还挺好用,效果确实挺酷炫。水一篇博文。

github : https://github.com/mattboldt/typed.js/

bootcdn : https://www.bootcdn.cn/typed.js/

本文基于最新版本 V2.0.11

github releases : https://github.com/mattboldt/typed.js/releases/tag/v2.0.11

Typed.js 是一个模仿输入的库。
输入一些字符串,看它以您设置的速度键入,将键入的内容退格,并以你设置的任意字符串开始一个新的句子。

使用可选以下方式:

npm install typed.js
yarn add typed.js
bower install typed.js
CDN <script src="https://cdn.jsdelivr.net/npm/typed.js@2.0.11"></script>

开始使用
你需要的仅仅是这样

//也可以包含在正则脚本标记中 
import Typed from 'typed.js';

var options = {
  strings: ['<i>First</i> sentence.', '&amp; a second sentence.'],
  typeSpeed: 40
};

var typed = new Typed('.element', options);

使用了 Typed.js 库的精彩网站:
https://github.com/features/package-registry
https://slack.com/
https://envato.com/
https://gorails.com/
https://productmap.co/
https://www.typed.com/
https://apeiron.io
https://git.market/
https://commando.io/
http://testdouble.com/agency.html
https://www.capitalfactory.com/
http://www.maxcdn.com/
https://www.powerauth.com/

在静态HTML中使用(对 SEO 友好)

您可以在页面上放置一个htmldiv并从中读取,而不是使用strings数组插入字符串。这允许搜索引擎的爬虫和禁用 JavaScript 的用户在页面上看到您的文本。

<script>
  var typed = new Typed('#typed', {
    stringsElement: '#typed-strings'
  });
</script>
<div id="typed-strings">
  <p>Typed.js is a <strong>JavaScript</strong> library.</p>
  <p>It <em>types</em> out sentences.</p>
</div>
<span id="typed"></span>

暂停打字效果

通过包含转义符,可以在模拟输出的时候暂停一定时间。

var typed = new Typed('.element', {
  // Waits 1000ms after typing "First"
  strings: ['First ^1000 sentence.', 'Second sentence.']
});

聪明的退格

在下面的示例中,这只会将 this is a 后面的单词退格。

var typed = new Typed('.element', {
  strings: ['This is a JavaScript library', 'This is an ES6 module'],
  smartBackspace: true // Default value
});

批量输入

下面的示例将模拟终端在键入命令并查看其结果时的行为方式。

var typed = new Typed('.element', {
  strings: ['git push --force ^1000\n `pushed to origin with option force`']
});

CSS

CSS动画是在JavaScript初始化的基础上构建的。但是,你可以根据自己的意愿定制它们。

/* Cursor 
.typed-cursor {
}

/* If fade out option is set 
.typed-fade-out {
}

与 ReactJS 一起使用 https://jsfiddle.net/mattboldt/ovat9jmp/
与 Vue 一起使用 https://github.com/Orlandster/vue-typed-js
作为 Web 组件使用 https://github.com/Orlandster/wc-typed-js

配置

var typed = new Typed('.element', {

    //属性 {array} strings 需要输出的字符串们
    //属性 {string} 包含字符串的HTML标签ID
    strings: [
    'These are the default values...',
    'You know what you should do?',
    'Use your own!',
    'Have a great day!'
    ],
    stringsElement: null,
    //属性 {number} 打字类型速度(毫秒)
    typeSpeed: 0,
    //属性 {number} 开始键入前的延迟时间(毫秒)
    startDelay: 0,
    //属性 {number} 后退速度(毫秒)
    backSpeed: 0,
    //属性 {boolean} 智能退格,仅退格与前一个字符串不匹配的内容
    smartBackspace: true,
    //属性 {boolean} 随机输出
    shuffle: false,
    //属性 {number} 退格前的延迟时间(毫秒)
    backDelay: 700,
    //属性 {boolean} 淡入淡出而不是退格
    //属性 {string} 淡入动画css类
    //属性 {boolean} 淡出延迟淡出延迟(毫秒)
    fadeOut: false,
    fadeOutClass: 'typed-fade-out',
    fadeOutDelay: 500,
    //属性 {boolean} 循环所有字符串
    //属性 {number} 循环次数
    loop: false,
    loopCount: Infinity,
    //属性 {boolean} 显示光标
    //属性 {string} 光标
    //属性 {boolean} 为光标插入淡入淡出CSS到HTML<head>
    showCursor: true,
    cursorChar: '|',
    autoInsertCss: true,
    //属性 {string} attr属性用于键入
    //例如:输入占位符、值或仅输入HTML文本
    attr: null,
    //属性 {boolean} 如果el是文本输入,绑定输入焦点事件
    bindInputFocusEvents: false,
    //属性 {string} “html”或“zero”表示纯文本
    contentType: 'html',
    //在它开始打字之前
    //param {Typed} self
    onBegin: (self) => {},
    //所有的打字完成后
    //param {Typed} self
    onComplete: (self) => {},
    //在键入每个字符串之前
    //param {number} arrayPos
    //param {Typed} self
    preStringTyped: (arrayPos, self) => {},
    //键入每个字符串后
    //param {number} arrayPos
    //param {Typed} self
    onStringTyped: (arrayPos, self) => {},
    //在循环期间,在键入最后一个字符串之后
    //param {Typed} self
    onLastStringBackspaced: (self) => {},
    //打字已停止
    //param {number} arrayPos
    //param {Typed} self
    onTypingPaused: (arrayPos, self) => {},
    //停止后已开始键入
    //param {number} arrayPos
    //param {Typed} self
    onTypingResumed: (arrayPos, self) => {},
    //复位后
    //param {Typed} self
    onReset: (self) => {},
    //停止后
    //param {number} arrayPos
    //param {Typed} self
    onStop: (arrayPos, self) => {},
    //开始后
    //param {number} arrayPos
    //param {Typed} self
    onStart: (arrayPos, self) => {},
    //销毁后
    //param {Typed} self
    onDestroy: (self) => {}
});
posted @ 2020-12-16 21:42  Aaxuan  阅读(2202)  评论(0编辑  收藏  举报