当前位置:首页 > JavaScript

js怎么实现打字效果

2026-03-01 15:58:15JavaScript

实现打字效果的步骤

使用纯JavaScript实现打字效果,可以通过定时器和字符串截取模拟逐字显示的效果。

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('target');
typeWriter('这是要逐字显示的文字', targetElement, 100);

添加光标闪烁效果

为了增强视觉效果,可以添加一个闪烁的光标。

js怎么实现打字效果

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

  const interval = setInterval(() => {
    if (i < text.length) {
      element.insertBefore(document.createTextNode(text.charAt(i)), cursor);
      i++;
    } else {
      clearInterval(interval);
    }
  }, speed);
}

// CSS样式
.cursor {
  display: inline-block;
  width: 2px;
  height: 1em;
  background-color: black;
  animation: blink 1s infinite;
}

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

支持删除效果

实现先打字后删除的循环效果。

js怎么实现打字效果

function typeAndDelete(text, element, speed, delay) {
  let i = 0;
  let isDeleting = false;

  function tick() {
    const currentText = element.textContent;

    if (!isDeleting && i < text.length) {
      element.textContent = text.substring(0, i + 1);
      i++;
      setTimeout(tick, speed);
    } else if (isDeleting && i > 0) {
      element.textContent = text.substring(0, i - 1);
      i--;
      setTimeout(tick, speed / 2);
    } else {
      isDeleting = !isDeleting;
      setTimeout(tick, delay);
    }
  }

  tick();
}

使用CSS动画实现打字效果

纯CSS也可以实现类似效果,但灵活性较差。

.typewriter {
  overflow: hidden;
  border-right: 2px solid;
  white-space: nowrap;
  animation: typing 3s steps(30), blink-caret 0.5s step-end infinite;
}

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

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

使用第三方库

如果项目允许使用第三方库,Typed.js是一个成熟的选择。

// 引入Typed.js后
new Typed('#element', {
  strings: ['第一段文字', '第二段文字'],
  typeSpeed: 50,
  backSpeed: 30,
  loop: true
});

每种方法各有优缺点,纯JavaScript实现最灵活但代码量稍多,CSS实现简单但功能有限,第三方库功能丰富但增加依赖。根据项目需求选择合适方案。

标签: 效果js
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

h5所能实现的效果

h5所能实现的效果

H5能实现的效果 H5(HTML5)作为最新的HTML标准,具备强大的功能和丰富的API支持,能够实现多种现代Web应用效果。以下是H5的主要能力分类: 多媒体支持 H5原生支持音频和视频播放,无需…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

vue实现突出效果

vue实现突出效果

Vue 实现突出效果的方法 在 Vue 中实现突出效果通常涉及动态样式绑定、动画过渡或第三方库的使用。以下是几种常见实现方式: 动态类名绑定 通过 v-bind:class 或简写 :class 实…