vue实现文字手工动态打出效果

vue实现文字手工动态打出效果

问题背景

本文实现vue中,动态生成文字手动打出效果。

问题分析

话不多说,直接上代码:

复制代码
<template>
  <main>
    <button @click="makeText">
      <p class="text">点击生成内容</p>
    </button>

    <p class="text" :class="{'outer-border' : stringA.length > 0}">{{ stringA }}</p>
  </main>
</template>
 
<script>
export default {
  data() {
    return {
      stringB : '卜算子·咏梅\n毛泽东\n风雨送春归,\n飞雪迎春到。\n已是悬崖百丈冰,\n犹有花枝俏。\n俏也不争春,\n只把春来报。\n待到山花烂漫时,\n她在丛中笑。',
      stringA : '',
    }
  },
  components: {
  },
  methods: {
    makeText() {
      console.log(this.stringA.length, this.stringB.length);
      if (this.stringA.length >= this.stringB.length) {
        // 退出递归
        return;
      } else {
        // stringA仍然比stringB短,进入下一次等待和递归
        setTimeout(() => {
          this.stringA += this.stringB.charAt(this.stringA.length);
          this.makeText(this.stringA, this.stringB);
        }, 50);
      }
    }
  }
}
</script>

<style scoped>
.text {
  font-size: 30px;
  max-width: 800px;
}

.outer-border {
  border: 2px solid black;
  border-radius: 5px;
  padding: 3px;
  white-space: pre-wrap;
}
</style>

运行结果如下:

问题总结

本文实现了文字手工动态打出效果,有兴趣的同学可以进一步深入研究。

相关推荐
猫猫不是喵喵.6 分钟前
Vue2 的 Vuex 状态管理与 Vue3 的 Pinia 状态管理
前端·javascript·vue.js
看昭奚恤哭1 小时前
Flutter 布局核心思想
开发语言·javascript·flutter
朝阳5811 小时前
Cesium `Camera.flyTo`:“飞过去“
javascript
宁风NF2 小时前
JavaScript:内存、垃圾回收、性能优化
开发语言·前端·javascript·学习·性能优化·es6
午安~婉3 小时前
挑战二:博客预览卡片
前端·javascript·html
夏殇之殁14 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
新中地GIS开发老师15 小时前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
丙氨酸長鏈15 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
kyriewen16 小时前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
林焱_RPAAI17 小时前
影刀RPA技术深度:CSS选择器高级实战指南——伪类属性选择器与性能对比完全解析
vue.js·react.js