当前位置:首页 > JavaScript

js实现打字

2026-03-14 06:49:24JavaScript

实现打字效果的方法

在JavaScript中实现打字效果可以通过多种方式完成,以下是几种常见的方法:

方法一:使用setInterval逐字显示

function typeWriter(text, element, speed) {
  let i = 0;
  const timer = setInterval(() => {
    if (i < text.length) {
      element.innerHTML += text.charAt(i);
      i++;
    } else {
      clearInterval(timer);
    }
  }, speed);
}

// 使用示例
const targetElement = document.getElementById('typing');
typeWriter("Hello, this is a typing effect!", targetElement, 100);

方法二:使用递归setTimeout

js实现打字

function typeWriter(text, element, speed, i = 0) {
  if (i < text.length) {
    element.innerHTML += text.charAt(i);
    setTimeout(() => typeWriter(text, element, speed, i + 1), speed);
  }
}

// 使用示例
const targetElement = document.getElementById('typing');
typeWriter("This is a recursive typing effect!", targetElement, 100);

方法三:带删除效果的打字

function typeWithDelete(fullText, element, typingSpeed, deletingSpeed, pause) {
  let i = 0;
  let isDeleting = false;

  function tick() {
    const currentText = fullText.substring(0, i);
    element.innerHTML = currentText;

    if (!isDeleting && i === fullText.length) {
      setTimeout(() => isDeleting = true, pause);
    } else if (isDeleting && i === 0) {
      isDeleting = false;
      setTimeout(tick, typingSpeed);
      return;
    }

    const speed = isDeleting ? deletingSpeed : typingSpeed;
    i += isDeleting ? -1 : 1;
    setTimeout(tick, speed);
  }

  tick();
}

// 使用示例
const targetElement = document.getElementById('typing');
typeWithDelete("This text types and deletes!", targetElement, 100, 50, 1000);

增强效果

添加光标闪烁效果

js实现打字

可以在HTML中添加一个光标元素,并通过CSS实现闪烁:

<span id="typing"></span><span class="cursor">|</span>
.cursor {
  animation: blink 1s infinite;
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

多文本循环打字

const texts = ["First text", "Second text", "Third text"];
let textIndex = 0;

function cycleTexts(element, typingSpeed, deletingSpeed, pause) {
  typeWithDelete(texts[textIndex], element, typingSpeed, deletingSpeed, pause);
  textIndex = (textIndex + 1) % texts.length;
  setTimeout(() => cycleTexts(element, typingSpeed, deletingSpeed, pause), pause * 2);
}

// 使用示例
const targetElement = document.getElementById('typing');
cycleTexts(targetElement, 100, 50, 1000);

注意事项

  • 确保目标元素存在且为空,否则会追加到现有内容
  • 调整速度参数以获得理想的打字节奏
  • 对于更复杂的效果,可以考虑使用现成的库如Type.js
  • 在组件卸载时清除定时器,防止内存泄漏

这些方法提供了从简单到高级的打字效果实现,可以根据具体需求选择或组合使用。

标签: js
分享给朋友:

相关文章

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…