news 2026/4/27 7:15:00

前端实现打字机的效果插件(typed.js)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端实现打字机的效果插件(typed.js)

1.cdn方式引入

<script src="https://cdn.bootcdn.net/ajax/libs/typed.js/2.0.12/typed.min.js"></script>

2.npm方式引入

npm install typed.js

3.使用示例

<template> <div class="box"> <span id="text"></span> </div> </template> <script lang="ts" setup> import Typed from 'typed.js'; import { onMounted } from 'vue'; onMounted(() => { const options = { strings: [ '我喜欢<span style="color:yellow">睡觉</span>', '我喜欢吃饭', '<span style="color:red">我喜欢自由</span>', ], typeSpeed: 100, //打字的速度 smartBackspace: true, // 开启智能退格 默认false backSpeed: 50, //后退速度 backDelay: 500, //后退延迟 loop: true, //是否循环.,, startDelay: 1000, //起始时间 fadeOut: true, //淡出效果 fadeOutClass: 'typed-fade-out', //fadeOutClass 用于淡入淡出动画的css类 fadeOutDelay: 500, //以毫秒为单位淡出延迟 // smartBackspace: true, //智能后间距, // 添加开始回调 onBegin: (self) => { console.log('打字动画开始'); // 可以在这里执行开始动画时的逻辑 }, }; const typed = new Typed('#text', options); typed.start(); }); </script> <style lang="scss" scoped> .box { text-indent: 2em; line-height: 30px; div { padding-bottom: 30px; } &:deep(.typed-cursor) { color: #323223; padding: 1px; background-color: #323223; } } </style>

4.配置说明

/** * Welcome to Typed.js! * @param {string} elementId HTML element ID _OR_ HTML element * @param {object} options options object * @returns {object} a new Typed object */ declare module 'typed.js' { export interface TypedOptions { /** * 要键入的字符串 */ strings?: string[]; /** * 包含字符串子元素的元素的ID */ stringsElement?: string | Element; /** * 输入速度,以毫秒为单位 */ typeSpeed?: number; /** * 键入之前的时间以毫秒开始 */ startDelay?: number; /** * 退格速度,以毫秒为单位 */ backSpeed?: number; /** * 是否只退格与前一个字符串不匹配的内容 */ smartBackspace?: boolean; /** * 是否洗牌 */ shuffle?: boolean; /** * 退回之前的时间,以毫秒为单位 */ backDelay?: number; /** * 是否用淡出替代空格 */ fadeOut?: boolean; /** * 用于淡入淡出动画的css类 */ fadeOutClass?: string; /** * 以毫秒为单位淡出延迟 */ fadeOutDelay?: number; /** * 是否循环字符串 */ loop?: boolean; /** * 循环次数 */ loopCount?: number; /** * 是否显示光标 */ showCursor?: boolean; /** * 光标的字符 */ cursorChar?: string; /** * 是否将光标和fadeOut的CSS插入HTML <head> */ autoInsertCss?: boolean; /** * 输入属性 例如:输入占位符,值或仅HTML文本 */ attr?: string; /** * 如果el是文本输入,则绑定到焦点和模糊 */ bindInputFocusEvents?: boolean; /** * 明文的'html'或'null' */ contentType?: string; /** * 用于在打字动画开始时执行回调函数 */ onBegin?(self: Typed): void; /** * 所有打字都已完成调用的回调函数 */ onComplete?(self: Typed): void; /** * 在键入每个字符串之前调用的回调函数 */ preStringTyped?(arrayPos: number, self: Typed): void; /** * 输入每个字符串后调用的回调函数 */ onStringTyped?(arrayPos: number, self: Typed): void; /** * 在循环期间,在键入最后一个字符串之后调用的回调函数 */ onLastStringBackspaced?(self: Typed): void; /** * 打字已经停止调用的回调函数 */ onTypingPaused?(arrayPos: number, self: Typed): void; /** * 停止后开始键入调用的回调函数 */ onTypingResumed?(arrayPos: number, self: Typed): void; /** * 重置后调用的回调函数 */ onReset?(self: Typed): void; /** * 停止后调用的回调函数 */ onStop?(arrayPos: number, self: Typed): void; /** * 开始后调用的回调函数 */ onStart?(arrayPos: number, self: Typed): void; /** * 销毁后调用的回调函数 */ onDestroy?(self: Typed): void; } export default class Typed { constructor(elementId: any, options: TypedOptions); /** * Toggle start() and stop() of the Typed instance * @public */ public toggle(): void; /** * Stop typing / backspacing and enable cursor blinking * @public */ public stop(): void; /** * Start typing / backspacing after being stopped * @public */ public start(): void; /** * Destroy this instance of Typed * @public */ public destroy(): void; /** * Reset Typed and optionally restarts * @param {boolean} restart * @public */ public reset(restart?: boolean): void; cursor: HTMLSpanElement; strPos: number; arrayPos: number; curLoop: number; /** * Begins the typing animation * @private */ private begin; typingComplete: boolean; timeout: any; /** * Called for each character typed * @param {string} curString the current string in the strings array * @param {number} curStrPos the current position in the curString * @private */ private typewrite; temporaryPause: boolean; /** * Continue to the next string & begin typing * @param {string} curString the current string in the strings array * @param {number} curStrPos the current position in the curString * @private */ private keepTyping; /** * We're done typing the current string * @param {string} curString the current string in the strings array * @param {number} curStrPos the current position in the curString * @private */ private doneTyping; /** * Backspaces 1 character at a time * @param {string} curString the current string in the strings array * @param {number} curStrPos the current position in the curString * @private */ private backspace; stopNum: number; /** * Full animation is complete * @private */ private complete; /** * Has the typing been stopped * @param {string} curString the current string in the strings array * @param {number} curStrPos the current position in the curString * @param {boolean} isTyping * @private */ private setPauseStatus; /** * Toggle the blinking cursor * @param {boolean} isBlinking * @private */ private toggleBlinking; cursorBlinking: any; /** * Speed in MS to type * @param {number} speed * @private */ private humanizer; /** * Shuffle the sequence of the strings array * @private */ private shuffleStringsIfNeeded; sequence: any; /** * Adds a CSS class to fade out current string * @private */ private initFadeOut; /** * Replaces current text in the HTML element * depending on element type * @param {string} str * @private */ private replaceText; /** * If using input elements, bind focus in order to * start and stop the animation * @private */ private bindFocusEvents; /** * On init, insert the cursor element * @private */ private insertCursor; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 22:11:45

伤口结痂后还有必要使用促进愈合的药物吗?

口腔生理环境特殊&#xff0c;伤口愈合慢且易感染&#xff0c;对护理和药物适配性要求极高&#xff0c;而伤口愈合全周期亦需分阶段护理。在这一领域&#xff0c;虽有3M、施乐辉等国际企业及稳健医疗、振德医疗等国内企业布局相关产品&#xff0c;口腔健康细分领域也有高露洁、…

作者头像 李华
网站建设 2026/4/18 7:35:51

基于RKLLM的Qwen3-vl推理代码解析

写在前面 参考历史博客&#xff0c;成功把Qwen3-vl2b部署在RK3588上&#xff0c;但是对代码处理流程模糊&#xff0c;C底子差&#xff0c;遂做笔记于CSDN。难免出错&#xff0c;欢迎大家指出&#xff0c;交流。 项目结构build 通常是编译构建产物的临时目录&#xff0c;存放编译…

作者头像 李华
网站建设 2026/4/20 12:10:52

adb常用指令

1.日志抓取抓取所有日志&#xff08;推荐&#xff09;adb logcat -b main -b system -b radio -b events -v time > all_logs.txt这是最常用的命令&#xff0c;可一次性捕获 main&#xff08;主应用日志&#xff09;、system&#xff08;系统日志&#xff09;、radio&#x…

作者头像 李华
网站建设 2026/4/18 10:48:21

光圈智选首页升级:升佣 + 选品提速双 buff

光圈智选新版首页已完成重构上线&#xff0c;围绕带货场景中的“高效选品”与“收益提升”两大核心痛点优化&#xff0c;打通从选品到收益转化的全链路体验&#xff0c;为达人、商家的带货运营提供更高效的工具支撑。选品能力升级&#xff1a;精准匹配需求&#xff0c;提升选品…

作者头像 李华
网站建设 2026/4/18 8:16:52

收藏!AI焦虑别慌,程序员为啥要学大模型?零基础系统入门指南

近来技术圈的“AI焦虑”持续蔓延&#xff0c;“大模型”“AI替代程序员”这类话题反复霸占热搜与技术社群&#xff0c;不少从业者陷入莫名的恐慌与迷茫。 相信很多程序员都有这样的疑问&#xff1a;在AI浪潮席卷各行各业的当下&#xff0c;到底该不该主动掌握AI大模型相关能力&…

作者头像 李华