vue自定义指令实现打字效果

实现如通义灵码官网关于代码片段中,当鼠标hover上代码上时,出现打字效果,示例地址:https://tongyi.aliyun.com/lingma?spm=5176.28508143.J_ahRFo5CaAe_asSOaCgS4J.14.5421154auHz4xJ&scm=20140722.M_185502201.P_131.MO_2276-ID_10360025-MID_10360025-CID_31292-ST_10352-V_1

通过vue2封装指令的方式实现:

import Vue from 'vue';

const typewrite = {
  bind(el, binding) {
    const typingSpeed = 50; // 打字速度,单位为毫秒
    let typingEffectActive = false;
    let originalText = el.textContent;
    el.textContent = originalText; // 初始化文本内容

    el.addEventListener('mouseenter', function() {
      if (!typingEffectActive){
        typingEffectActive = true;
        el.textContent = '';
        let i = 0;
        let typingEffect = setInterval(function() {
          if (i < originalText.length) {
            el.textContent += originalText.charAt(i);
            i++;
          } else {
            clearInterval(typingEffect); // 清除定时器
            typingEffectActive = false;
          }
        }, typingSpeed); // 设置速度,每100毫秒添加一个字符
      }
    });
  }
}

Vue.directive('typewrite',typewrite);

调用方式:

div v-typewrite class="app-con" style="width: 500px;text-align: left;">
      这里是默认显示的文字,鼠标悬停时将触发打字效果。
      这里是默认显示的文字,鼠标悬停时将触发打字效果。
      这里是默认显示的文字,鼠标悬停时将触发打字效果
    </div>
    <pre v-typewrite>
       var message="欢迎";
          for(var i=1;i<=10;i++)
          {
              alert(message);
          }
    </pre>

当然也可以使用第三方插件,例如:typed.js,参考地址:https://www.cnblogs.com/sexintercourse/p/18113289

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值