当前位置:首页 > 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
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js 实现分页

js 实现分页

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

js实现变形

js实现变形

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

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…