打字机效果插件-typeit

1,685 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情

#摘要

在这两天的需求中,我们需要使用到一个打字机效果。当然自己编写也是可以的,但编写过程会花费比较长的时间,这对于项目的进度是不友好的。在看过很多库之后,发现了他TypeIt

# 简介

在他的官网我们就可以看出是如何使用的,通过.的方式来实现打字机效果。

new TypeIt("#hero", {
  speed: 50,
  startDelay: 900,
})
  .type("the mot versti", { delay: 100 })
  .move(-8, { delay: 100 })
  .type("s", { delay: 400 })
  .move(null, { to: "START", instant: true, delay: 300 })
  .move(1, { delay: 200 })
  .delete(1)
  .type("T", { delay: 225 })
  .pause(200)
  .move(2, { instant: true })
  .pause(200)
  .move(5, { instant: true })
  .move(5, { delay: 200 })
  .type("a", { delay: 350 })
  .move(null, { to: "END" })
  .type("le typing utlity")
  .move(-4, { delay: 150 })
  .type("i")
  .move(null, { to: "END" })
  .type(' on the <span class="place">internet</span>', { delay: 400 })
  .delete(".place", { delay: 800, instant: true })
  .type('<em><strong class="font-semibold">planet.</strong></em>', {
    speed: 100,
  })
  .go();

image.png

#使用

我使用到时React,因此我下面介绍的主要已react为主

typeit-react官网

安装TypeIt for React

npm install typeit-react

引入

import TypeIt from "typeit-react";

export default () => {
  return (
    <div className="App">
      <TypeIt>This will be typed in a `span` element!</TypeIt>
    </div>
  );
};

这样就会实现一个打字机的效果,他会从第一个字母逐个打印,知道全部显示出来。 image.png

## 如何实现回退删除效果呢?

<TypeIt
    getBeforeInit={(instance) => {
        instance.type("This will be typed in a `span` element!")
        .pause(750).delete(9).pause(500).type("web 前端工程师")
        .pause(750).delete(9).pause(500).type("FROM 成都");
        
        // 这里一定要返回instance
        return instance;
    }}
></TypeIt>
属性含义参数用法
pause停止numberpause(750) :停止750毫秒
delete从当前字符向前删除numberdelete(9) :向前删除9个字符
type开始打印anytype("FROM 成都") :打印 FROM 成都

# 如何循环打印

需要添加option属性 有关Options属性的文档,大家可以点击查看,来看看其他属性。我个人只需要使用loop就可以满足我的业务需求了。

<TypeIt
    getBeforeInit={(instance) => {
        instance.type("黄祺文 QIWEN").pause(750).delete(9)
        .pause(500).type("web 前端工程师").pause(750)
        .delete(9).pause(500).type("FROM 成都");
        return instance;
    }}
    // 循环打印
    options={{ loop: true }}
></TypeIt>

总结

这个插件帮助我解放了生产力,我可以在很短的时间内完成项目所需的效果。本文只是简单的介绍如何使用,想要深入学习的同学请查看文档进行深入学习。