当前位置:首页 > JavaScript

js实现打字

2026-02-01 08:18:37JavaScript

js实现打字

实现打字效果的方法

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

js实现打字

使用setInterval逐字显示文本

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

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

使用async/await实现更流畅的打字效果

async function asyncTypeWriter(text, element, speed) {
  for (let i = 0; i < text.length; i++) {
    await new Promise(resolve => setTimeout(resolve, speed));
    element.textContent += text.charAt(i);
  }
}

// 使用示例
const target = document.querySelector('.typing-demo');
asyncTypeWriter('This is an async typing effect.', target, 150);

添加光标闪烁效果

function typeWithCursor(text, element, speed) {
  let i = 0;
  const cursor = document.createElement('span');
  cursor.className = 'cursor';
  cursor.textContent = '|';
  element.appendChild(cursor);

  const interval = setInterval(() => {
    if (i < text.length) {
      const char = document.createTextNode(text.charAt(i));
      element.insertBefore(char, cursor);
      i++;
    } else {
      clearInterval(interval);
      // 可选:打字完成后移除或停止光标闪烁
      cursor.style.animation = 'none';
      cursor.style.opacity = '0';
    }
  }, speed);
}

// CSS样式
.cursor {
  animation: blink 1s infinite;
}
@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

支持删除效果

async function typeAndDelete(fullText, element, typeSpeed, deleteSpeed, pause) {
  while (true) {
    // 打字阶段
    for (let i = 0; i <= fullText.length; i++) {
      element.textContent = fullText.substring(0, i);
      await new Promise(resolve => setTimeout(resolve, typeSpeed));
    }

    // 暂停
    await new Promise(resolve => setTimeout(resolve, pause));

    // 删除阶段
    for (let i = fullText.length; i >= 0; i--) {
      element.textContent = fullText.substring(0, i);
      await new Promise(resolve => setTimeout(resolve, deleteSpeed));
    }
  }
}

使用CSS动画增强效果

可以为打字效果添加CSS过渡效果,使文字显示更加平滑:

.typing-container {
  overflow: hidden;
  white-space: nowrap;
  border-right: 2px solid #000; /* 模拟光标 */
  animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite;
}

@keyframes typing {
  from { width: 0 }
  to { width: 100% }
}

@keyframes blink-caret {
  from, to { border-color: transparent }
  50% { border-color: #000 }
}

这些方法可以根据具体需求进行组合和调整,创造出各种不同的打字效果。实际应用中,可以根据项目需求选择最适合的实现方式。

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现自举

js实现自举

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

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…