Park

iOS-Safari-文本自动放大

·4 min read

🏷 #frontend 🏷 #pitfall 🏷 #ios

iOS Safari 文本自动放大导致按钮换行

移动端 Safari 会在“可读性不足”时对文本自动放大,导致局部文字突然变大、换行。桌面端不会触发,所以很难本地复现。

观察

  • 只在 iOS Safari 出现
  • 文案突然变大,且在按钮内换行
  • 同样的 CSS 在桌面端正常

推断:iOS 的 text autosizing 介入

当文本字号过小、letter-spacing 较大或布局过紧时,Safari 会在渲染阶段放大字体以保证可读性。 放大后文本宽度变大,于是触发换行;再叠加 letter-spacing,效果更明显。

最小修复

目标:禁止自动放大 + 防止换行 + 稳定行高。

.daily-sentence-audio {
  white-space: nowrap;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

.daily-sentence-audio-label {
  line-height: 1;
  display: inline-block;
  font-size: 0.65rem; /* 可选 */
}

为什么桌面不复现

桌面 Safari/Chromium 不会做 text autosizing,所以不会出现“凭空变大”的现象。

小结

遇到“只在 iOS Safari 出现的文字变大/换行”,优先怀疑 text autosizing,别急着改布局。