当前位置: 首页 > news >正文

vue3实现打字机的效果,可以换行

之前看了很多文章,效果是实现了,就是没有自动换行的效果,参考了文章写了一个,先上个效果图,卡顿是因为模仿了卡顿的效果,还是很丝滑的

目录

  • 效果图:
  • 代码如下

效果图:

在这里插入图片描述

![请添加图片描述](https://i-blog.csdnimg.cn/direct/d8ef33d83dd3441a87d6d033d9e7cafa.gif

代码如下

原理:
1.在你需要显示换行的地方插入换行符:\n
2.div上用innerHTML展示数据

  <div class="msg-text cursor-ani" :innerHTML="formattedText"></div>let answer = ref(''); // 打字机内容let timer = ref<any>(); // 定时器let interTime = ref(10); // 初始化间隔时间let interArr = ref([20, 30, 10, 20, 80, 30, 15, 400, 50, 20]);let dialogueAnswer = ref('');//当前文本const formattedText = computed(() => {return dialogueAnswer.value.replace(/\n/g, '<br>');});let e = `我们并不是为了活着而活着,但是我们也是为了\n 活着而活着,生命本身就是一种巨大的力量,我们应当敬畏生命,把活着、活好,当成生命追求的极致的目标,让生命散发最大限度的光和热。苦难无处不在,生活处处艰险,我们只有在经历苦难后依然选择绽放笑容,那才是真正懂得了人生的意义----余华<<活着>>`;/**调用打字机,模拟获取到数据调用打字机*/function onTypewriterFun() {console.log('🚀 ~ onTypewriterFun ~ onTypewriterFun:');if (e) {answer.value = e; // 打字机文本内容clearInterval(timer.value); // 清除定时器timer.value = setInterval(setContent, interTime.value);}}function setContent() {if (dialogueAnswer.value.length >= answer.value.length) {// 说明文本已全部输出,清除定时器,结束执行clearInterval(timer.value);return;} else {dialogueAnswer.value += answer.value.charAt(dialogueAnswer.value.length);interTime.value = interArr.value[Math.floor(Math.random() * 10)];clearInterval(timer.value);timer.value = setInterval(setContent, interTime.value);}}.cursor-ani {position: absolute;top: 220px;left: 40%;width: 500px;height: 500px;z-index: 999;background-color: #333;color: #ffffff;}.cursor-ani::after {content: '';position: absolute;width: 1px;height: 16px;background: #333;transform: translateX(3px) translateY(3px);animation: cursor-blinks 0.8s infinite forwards;}@keyframes cursor-blinks {from {opacity: 0;}to {opacity: 1;}}

相关文章:

  • 3.整数二分
  • YOLOv9改进策略【注意力机制篇】| 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度
  • 无人机在农业方面的应用!
  • java通过redis完成幂等性操作
  • 基于RPA+BERT的文档辅助“悦读”系统 | OPENAIGC开发者大赛高校组AI创作力奖
  • 前端学习笔记-JS进阶篇-02
  • 54 循环神经网络RNN_by《李沐:动手学深度学习v2》pytorch版
  • 安卓Android压力测试与性能测试详解!
  • 什么是SQL注入?
  • Linux 学习笔记(十五)—— 基础IO
  • OpenCV_自定义线性滤波(filter2D)应用详解
  • C# CS1612 尝试修改集合中值类型的情况
  • Android常用C++特性之std::equal
  • TCP\IP标准与OSI标准
  • Springboot项目在win系统开发部署到linux服务器出现上传文件编码问题
  • 03Go 类型总结
  • 0基础学习移动端适配
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript异步流程控制的前世今生
  • Mysql5.6主从复制
  • PAT A1092
  • React-生命周期杂记
  • Ruby 2.x 源代码分析:扩展 概述
  • 包装类对象
  • 聊聊hikari连接池的leakDetectionThreshold
  • 普通函数和构造函数的区别
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • #ifdef 的技巧用法
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (solr系列:一)使用tomcat部署solr服务
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)linux使用docker容器运行mysql
  • (论文阅读40-45)图像描述1
  • (南京观海微电子)——COF介绍
  • (排序详解之 堆排序)
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)编辑寄语:因为爱心,所以美丽
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net MySql
  • .Net Web项目创建比较不错的参考文章
  • .NET开源、简单、实用的数据库文档生成工具
  • .NET业务框架的构建
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • /etc/sudoers (root权限管理)
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • @SpringBootConfiguration重复加载报错
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [.NET 即时通信SignalR] 认识SignalR (一)