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

news2024/11/30 6:34:22

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

目录

  • 效果图:
  • 代码如下

效果图:

在这里插入图片描述

![请添加图片描述](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;
    }
  }



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2188859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter学习(8)结果查看

1&#xff09;查看结果树 查看结果树&#xff0c;显示取样器请求和响应的细节以及请求结果&#xff0c;包括消息头&#xff0c;请求的数据&#xff0c;响应的数据。 2&#xff09;汇总报告 汇总报告&#xff0c;为测试中的每个不同命名的请求创建一个表行。这与聚合报告类似&…

[数据结构] 树

n个结点的有限集合 除了根节点以外&#xff0c;每一个结点有且只有一条与父节点的连线&#xff1b; 总共有N-1条连线。 子树之间不相交。 术语 树的表示 每个结点的结构不知道 可以统一设置结构&#xff0c;优点&#xff1a;处理方便 缺点&#xff1a;会造成空间浪费&…

Chromium 硬件加速开关c++

选项页控制硬件加速开关 1、前端代码 <settings-toggle-button id"hardwareAcceleration"pref"{{prefs.hardware_acceleration_mode.enabled}}"label"$i18n{hardwareAccelerationLabel}"><template is"dom-if" if"[…

6.5 监控和日志 架构模式和应用实践

6.5 监控和日志 架构模式和应用实践 目录概述需求&#xff1a; 设计思路实现思路分析1.集中式监控2.分布式监控3.边缘监控4.集中式日志管理5.分布式日志管理6.实时日志流处理 监控工具最佳实践 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz ,…

基于元神操作系统实现NTFS文件操作(六)

1. 背景 本文主要介绍$Root元文件属性的解析。先介绍元文件各属性的属性体构成&#xff0c;然后结合读取到的元文件内容&#xff0c;对测试磁盘中目标分区的根目录进行展示。 2. $Root元文件属性的解析 使用每个属性头偏移0x04-0x07处的值可以从第一个属性开始依次定位下一个…

Jupyter | jupyter notebook 使用 conda 环境

博客使用更佳 点我进入博客 创建虚拟环境 在 Anaconda Prompt 里面输入&#xff1a; conda create -n env-name并且输入 y 确认。例如我们创建环境名为 jupyter 激活环境 conda activate env-name激活之后发现环境从 base 变为 jupyter(笔者用的 env-name 为 jupyter) …

python-求一个整数的质因数/字符串的镜像/加数

一:求一个整数的质因数 题目描述 编写一个程序&#xff0c;返回给定整数的质因数。 定义函数get_prime_factors()&#xff0c;该函数接受一个参数num&#xff08;正整数&#xff09;。 该函数应返回传入参数的质因数列表&#xff0c;且从小到大排序。 比如150的质因数分解如…

Spring MVC__HttpMessageConverter、拦截器、异常处理器、注解配置SpringMVC、SpringMVC执行流程

目录 一、HttpMessageConverter1、RequestBody2、RequestEntity3、ResponseBody4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity7.1、文件下载7.2、文件上传 二、拦截器1、拦截器的配置2、拦截器的三个抽象方法3、多个拦截器的执行顺序 三、异…

数据结构——计数、桶、基数排序

目录 引言 计数排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 桶排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 基数排序 1.算法思想 2.算法步骤 3.代码实现 4.复杂度分析 排序算法的稳定性 1.稳定性的概念 2.各个排序算法的稳定性 结束语 引…

初识Linux · 自主Shell编写

目录 前言&#xff1a; 1 命令行解释器部分 2 获取用户命令行参数 3 命令行参数进行分割 4 执行命令 5 判断命令是否为内建命令 前言&#xff1a; 本文介绍是自主Shell编写&#xff0c;对于shell&#xff0c;即外壳解释程序&#xff0c;我们目前接触到的命令行解释器&am…

基于vue框架的大学生四六级学习网站设计与实现i8o8z(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;学生,训练听力,学习单词,单词分类,阅读文章,文章类型,学习课程 开题报告内容 基于Vue框架的大学生四六级学习网站设计与实现开题报告 一、研究背景与意义 随着全球化进程的加速和国际交流的日益频繁&#xff0c;英语作为国际通用语言…

22.3 解读k8s服务发现源码

本节重点介绍 : discovery.Manager服务发现管理员 注册各个服务发现源启动各个服务发现源处理服务发现的结果 k8s服务发现 k8s-client informer机制 架构图补充 注册各个服务发现源 位置 D:\go_path\src\github.com\prometheus\prometheus\discovery\manager.go去掉部分细节…

ConcurrentHashMap 中的并行性

ConcurrentHashMap 在多线程应用程序中被广泛使用。多线程应用程序的示例包括在线游戏应用程序、聊天应用程序&#xff0c;它为应用程序增加了并发性的好处。为了使应用程序本质上更具并发性&#xff0c;ConcurrentHashMap 引入了一个名为“并行性”的概念。 在本文中&#xf…

飞机导航数据库资料

以上是从网上收集的飞机导航数据库的一些资料。现在放在百度网盘中。 链接&#xff1a;https://pan.baidu.com/s/1fDYuaB0DuyKmYt6C_lXvZQ?pwdkcqj 提取码&#xff1a;kcqj

ZTE RRC重建优化案例

ZTE RRC重建优化案例 随着移动通信网络的不断发展&#xff0c;用户对网络的稳定性和覆盖质量提出了更高的要求。尤其在LTE网络中&#xff0c;RRC&#xff08;Radio Resource Control&#xff09;连接的稳定性直接影响用户体验和业务连续性。然而&#xff0c;在实际网络环境中&a…

案例-表白墙简单实现

文章目录 效果展示初始画面提交内容后画面&#xff08;按键按下&#xff09; 代码区 效果展示 初始画面 提交内容后画面&#xff08;按键按下&#xff09; 代码区 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">…

C++输⼊输出

1.<iostream> 是 Input Output Stream 的缩写&#xff0c;是标准的输⼊、输出流库&#xff0c;定义了标准的输⼊、输 出对象 2.std::cin 是 istream 类的对象&#xff0c;它主要⾯向窄字符&#xff08;narrow characters (of type char)&#xff09;的标准输 ⼊流。 3…

STL之priority_queue篇——深入剖析C++中优先队列的实现原理、核心特性及其底层机制

文章目录 前言一、补充内容&#xff1a;堆1.1 什么是堆1.2 堆的分类与性质1.3 堆的向下调整算法&#xff08;小根堆&#xff09;实现流程&#xff1a;代码&#xff1a; 1.4 堆的向上调整算法&#xff08;小根堆&#xff09;实现流程&#xff1a;代码&#xff1a; 1.5 数组建堆算…

eclpsexxx

Copyright?2001-2004 International Business Machines Corp. Guidelines Eclipse 用户界面指南 2.1 版 查看目录 作者&#xff1a;Nick Edgar, Kevin Haaland, Jin Li , Kimberley Peter 译者&#xff1a;Bobbie Wang&#xff0c;Qi Liang 最新更新: 2004年2月 注意 您…

kaggle实战2信用卡反欺诈逻辑回归模型案例1

信用卡欺诈案例 数据集下载地址 https://storage.googleapis.com/download.tensorflow.org/data/creditcard.csv 参考不平衡数据的分类 文章目录 只进行特征衍生&#xff0c;未进行数据标准化、上才样处理数据不平衡问题&#xff0c;得到的准确率和召回率居然很高如果不处理数据…