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>

运行结果如下:

问题总结

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

相关推荐
dly_blog19 分钟前
setup 函数完整指南!
前端·javascript·vue.js
写代码的jiang1 小时前
【无标题】实战:Vue3 + Element Plus 实现树形选择器全量预加载与层级控制
前端·javascript·vue.js
晚烛1 小时前
实战前瞻:构建高可靠、低延迟的 Flutter + OpenHarmony 智慧交通出行平台
前端·javascript·flutter
WHOVENLY1 小时前
【javaScript】- 作用域[[scope]]
前端·javascript
来杯三花豆奶1 小时前
Vue3 Pinia 从入门到精通
前端·javascript·vue.js
syt_10131 小时前
设计模式之-工厂模式
javascript·单例模式·设计模式
weibkreuz2 小时前
React的基本使用@2
前端·javascript·react.js
于是我说2 小时前
前端JavaScript 项目中 获取当前页面滚动位置
开发语言·前端·javascript
小肖爱笑不爱笑2 小时前
JavaScript
java·javascript·json·web
凯小默2 小时前
02.内存管理和内存泄漏
javascript