字距悬停(悬停舒展字距可调 CSS 源码)

CSSJS 许可:自研原创

字距悬停组件源码:hover 时 letter-spacing 平滑舒展并换色,另有滑块实时调节任意字距与当前值显示,纯 CSS 过渡实现,适合导航链接、Logo 与科技感标语。

效果演示(真实可交互)

下方第一行中文「字距悬停舒展」在鼠标悬停时字距会从紧凑平滑舒展到 0.3em,同时变为蓝色;第二行英文「LETTER SPACING」初始就有较宽的 0.2em 字距,悬停时进一步拉开到 0.55em 并变为青色,适合模拟 Logo 舒展。第三行金色文字不依赖悬停,拖动下方滑块即可实时改变它的字距,右侧同步显示当前数值,方便直观感受 letter-spacing 的视觉密度变化。

字距悬停舒展

LETTER SPACING

实时字距调节

前两行悬停舒展,第三行跟随滑块

完整代码

HTML 结构:三行示例文字 + 一个滑块:

<p class="ls-hover ls-cn">字距悬停舒展</p>
<p class="ls-hover ls-en">LETTER SPACING</p>
<p class="ls-live" id="lsLive">实时字距调节</p>
<input id="lsRange" type="range" min="0" max="0.6" step="0.01" value="0.1" />

核心 CSS:悬停舒展只需一条 letter-spacing 过渡:

.ls-hover {
  font-size: 34px; font-weight: 700;
  letter-spacing: .02em;
  transition: letter-spacing .5s ease, color .5s ease;
}
.ls-hover:hover { letter-spacing: .3em; }

原生 JS:滑块实时写入第三行的字距并显示数值:

range.addEventListener('input', () => {
  const v = Number(range.value).toFixed(2);
  live.style.letterSpacing = v + 'em';
  out.textContent = v + 'em';
});

参数说明

参数默认值说明
中文初始字距.02em悬停前的中文字距
中文悬停字距.3em悬停舒展到的目标值
英文初始/悬停.2em → .55em英文本身字距需求更大
过渡时长.5s舒展速度,越大越优雅
滑块范围0 – .6em实时调节演示的区间

兼容性与性能

常见问题

Q: 悬停时文字会「跳动」而不是平滑? 过渡时长过短或初始/目标值差太小。保持 .5s 时长,并把字距差拉大到 0.15em 以上。

Q: 字距舒展后文本行变宽,影响布局怎么办? 悬停类动效尽量用于短标题;若用于长文本,可配合 white-space: nowrap 或把舒展值控制在 0.1em 内。

Q: 想同时缩放字号制造「呼吸」感? 给同一元素再加 font-size 过渡即可,两者独立过渡不冲突,但字号会触发重排,注意性能。

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(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核