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

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>

相关文章:

  • 【SAM2代码解析】数据集处理3--混合数据加载器(DataLoader)
  • 集成产品开发(IPD)核心框架:阶段门流程设计与跨部门协同实施要点
  • Linux 检查口令策略设置是否符合复杂度要求
  • kubernetes》》k8s》》Service 、Ingress 区别
  • Vue+tdesign t-input-number 设置长度和显示X号
  • [论文精读]Agent综述—— A survey on large language model based autonomous agents
  • Sigmoid函数简介及其Python实现
  • SQL命令二:SQL 高级查询与特殊算法
  • 《JDK 1.7 vs JDK 1.8 ConcurrentHashMap 深度对比与实战解析》
  • EWM 流程全自动化实现方法
  • MySQL explain
  • 《可信数据空间 技术架构》技术文件正式发布
  • Gas 优化不足、升级机制缺陷问题
  • 【区块链】区块链技术介绍
  • 『深夜_MySQL』详解数据库 探索数据库是如何存储的
  • MySQL 中的索引数量是否越多越好?为什么?
  • 华为发布全球首个L3商用智驾ADS4.0
  • vue+django农产品价格预测和推荐可视化系统[带知识图谱]
  • DeepSeek最新大模型发布-DeepSeek-Prover-V2-671B
  • harmonyOS 手机,双折叠,平板,PC端屏幕适配
  • 解放日报:浦东夯实“热带雨林”式科创生态
  • 印度宣布即日起对所有巴基斯坦航班关闭领空
  • 网警查处编造传播“登顶泰山最高可得3万奖金”网络谣言者
  • 人民日报社论:坚定信心、奋发有为、创新创造——写在“五一”国际劳动节
  • 【社论】法治是对民营经济最好的促进
  • 李铁案二审驳回上诉,维持一审有期徒刑20年的判决