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

vue3 打字机效果

打字机效果

因后端返回的数据也是通过@microsoft/fetch-event-source 一句一句流式返回 但是前端展示效果想要实现打字机效果

代码如下

<template><div><div class="text-container"><span class="text-content">{{ displayText }}</span><span :class="{ cursor: isTyping }"></span></div></div>
</template><script setup>import {ref,onMounted} from 'vue';const displayText = ref('')const isTyping = ref(false)const queue = ref([])// onMounted(() => {// 	mockStreamData(); // 示例中调用模拟数据流// })// 将新句子加入队列并触发处理const addSentence = (sentence) => {console.log(sentence, 'sentence');queue.value.push(sentence);if (!isTyping.value) {processQueue();}}// 处理队列中的句子const processQueue = async () => {isTyping.value = true;while (queue.value.length > 0) {const sentence = queue.value.shift();await typeText(sentence);}isTyping.value = false;}// 逐字显示句子const typeText = async (sentence) => {const chars = sentence.split("");for (const char of chars) {await delay(60); // 调整字符显示速度displayText.value += char;}displayText.value += " "; // 句子间添加空格}// 延迟函数const delay = (ms) => {return new Promise((resolve) => setTimeout(resolve, ms));}// 模拟接收流式数据(示例方法,需根据实际数据源调整)const mockStreamData = async () => {const sentences = ["Hello, world!", "This is a", " typing effect."];for (const sentence of sentences) {addSentence(sentence);await delay(1000); // 模拟分块到达间隔}}defineExpose({addSentence})
</script><style>.text-container {font-family: monospace;font-size: 18px;min-height: 1em; }.cursor {display: inline-block;width: 2px;height: 1em;background: black;margin-left: 2px;animation: blink 1s step-end infinite;}@keyframes blink {from,to {opacity: 0;}50% {opacity: 1;}}
</style>
http://www.xdnf.cn/news/3099.html

相关文章:

  • 【CUDA pytorch】
  • DAPO:对GRPO的几点改进
  • 模式识别的基本概念与理论体系
  • 智能机器人在物流行业的应用:效率提升与未来展望
  • pycharm导入同目录下文件未标红但报错ModuleNotFoundError
  • iVX 开源战略:多维突破下的产业生态革新与未来图景
  • MCP的基础知识
  • C++从入门到实战(十一)详细讲解C/C++语言中内存分布与C与C++内存管理对比
  • 一种动态分配内存错误的解决办法
  • Chrome插件备忘
  • Godot笔记:入门索引
  • 卷积神经网络
  • 解析2.4G射频芯片采用DFN封装的技术原因
  • 32单片机——串口
  • 精选10个好用的WordPress免费主题
  • Day106 | 灵神 | 二叉树 二叉树中的最长交错路径
  • OpenAI 2025 4月最新动态综述
  • DINOv2 - 无监督学习鲁棒视觉特征
  • Webpack 和 Vite 中静态资源动态加载的实现原理与方法详解
  • kotlin中Triple的作用
  • C#基础简述
  • Elasticsearch入门速通01:核心概念与选型指南
  • Unity URPShader:实现和PS一样的色相/饱和度调整参数效果(修复)
  • Springboot使用ThreadLocal提供线程局部变量,传递登录用户名
  • 计算机考研精炼 操作系统
  • Smart Link+Monitor Link组网
  • 【solidity基础】一文说清楚合约函数的大小事
  • HFI笔记
  • 数据库与大数据技术教程资料
  • 麒麟(Kylin)系统下安装MySQL 8.4.5(离线版)