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

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

目录

效果图:

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

代码如下

原理:

1.在你需要显示换行的地方插入换行符:\n

2.div上用innerHTML展示数据

js 复制代码
  <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;
    }
  }
相关推荐
专注前端30年1 小时前
Vue2 中 v-if 与 v-show 深度对比及实战指南
开发语言·前端·vue
专注前端30年6 小时前
【Vue2】基础知识汇总与实战指南
开发语言·前端·vue
麦麦大数据1 天前
F039 python五种算法美食推荐可视化大数据系统vue+flask前后端分离架构
python·算法·vue·推荐算法·美食·五种算法
java水泥工2 天前
课程答疑系统|基于SpringBoot和Vue的课程答疑系统(源码+数据库+文档)
spring boot·vue·计算机毕业设计·java毕业设计·大学生毕业设计·课程答疑系统
阿洛学长3 天前
高质量 AI 提示词之(从 0-1 开发 Vue 项目)
vue·ai编程·1024程序员节
IT教程资源D3 天前
[N_149]基于微信小程序网上商城系统
mysql·vue·前后端分离·springboot网上商城·网上商城小程序
ytgytg283 天前
芋道源码:VUE3部署:避坑--验证码不现显示,管理后台无法访问后端接口等,完善中。。。
java·vue
学会煎墙3 天前
使用uniapp——实现微信小程序的拖拽排序(vue3+ts)
微信小程序·uni-app·vue·ts
神膘护体小月半3 天前
bug 记录 - 路由守卫 beforeRouteLeave 与 confirm 结合,不生效问题
javascript·vue
江拥羡橙4 天前
css实现拼图样式,响应不同屏幕宽度
vue·less·css3·html5·1024程序员节·calc