打字光标闪烁特效(打字机逐字输入,光标样式闪烁可调)

JSCSS 许可:自研原创

打字光标闪烁特效:文字逐字输入、停顿删除、循环往复,光标支持方块、竖线、下划线三种样式,打字速度与闪烁频率实时可调,零依赖自研实现。

效果演示(真实可交互)

⌨️ 打字机效果:逐字输入、停顿删除、循环往复;光标样式与闪烁频率可调

经典终端/命令行风格动效,适合首屏标语、搜索框占位提示、控制台输出等场景。演示区可实时调节打字速度、光标样式与闪烁频率。

完整代码

<div class="tc-stage">
  <span class="tc-text" id="tcText"></span><span class="tc-cursor" id="tcCursor"></span>
</div>
.tc-cursor {
  display: inline-block;
  width: .55ch;
  height: 1.05em;
  background: #6c8cff;
  animation: tc-blink .9s steps(1) infinite;
}
@keyframes tc-blink {
  0%, 55% { opacity: 1; }
  56%, 100% { opacity: 0; }
}
const phrases = ['你好,我是粤喵组件站', '这里是自研动效组件库'];
let pi = 0, ci = 0, deleting = false;
const sleep = ms => new Promise(r => setTimeout(r, ms));

async function typeLoop() {
  const cur = phrases[pi];
  if (!deleting) {
    if (ci < cur.length) { textEl.textContent += cur[ci++]; await sleep(90); }
    else { await sleep(1500); deleting = true; }
  } else {
    if (ci > 0) { textEl.textContent = cur.slice(0, --ci); await sleep(45); }
    else { deleting = false; pi = (pi + 1) % phrases.length; await sleep(350); }
  }
  requestAnimationFrame(typeLoop);
}
typeLoop();

实现要点:打字阶段逐字追加字符并等待「打字间隔」,整句输入完停顿片刻后进入删除阶段,逐字删空再切换下一条。光标闪烁用 steps(1) 步进动画实现「开关式」闪烁,比线性淡出更像真实终端。

参数说明

参数位置说明
语句列表JS 中 phrases 数组任意多条,循环播放
打字速度speed 变量40-200ms/字,默认 90ms/字
删除速度speed / 2删除通常比输入快一倍,更利落
光标样式data-cursor 属性block / bar / underscore 三种
闪烁频率animation-duration300-2000ms,默认 900ms

兼容性与性能

常见问题

Q: 输入中文时会出现半个字的闪烁吗? 不会。本实现按「字符」逐个追加,中文一字一追加;如需按词输入,可把追加单位从字符改为整词。

Q: 光标和文字对不齐怎么办? 给光标设置与文字相同的 line-height,并使用 vertical-align: text-bottom 或 baseline 对齐;换样式时微调高度即可。

Q: 希望光标常亮不闪烁? 去掉 animation 属性即可,或把闪烁滑块拉到最大值获得「慢闪」效果,适合强调输入状态的场景。

Q: 可以商用吗? 可以。本组件为粤喵自研原创代码,免费商用无需署名,无任何协议限制。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核