You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

移动端全屏切换时字体大小异常问题求助

问题原因与解决方法

嘿,这个坑我之前踩过!这是Chrome移动端(包括DevTools模拟器)的一个默认优化行为在搞事——浏览器会在全屏模式下自动放大文本内容,而且这个缩放是浏览器层面的操作,不会体现在DevTools的计算样式里,所以你看到CSS都是16px,但实际显示的字体却变大了。

具体原因分析

Chrome为了提升触屏设备(对应你代码里的pointer: coarse场景)全屏内容的可读性,会自动对文本应用动态缩放,哪怕你的CSS明确设置了字体大小。这个行为没有修改元素的计算样式,只是在渲染层面做了放大,所以你在DevTools里查不到变化。另外,你的HTML里缺少关键的viewport meta标签,这会让移动端浏览器的视口计算混乱,进一步放大这个问题。

解决步骤

1. 添加viewport meta标签

在HTML的<head>里加上这个标签,确保页面适配设备宽度,避免浏览器默认的视口缩放:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

user-scalable=no可选,如果你不想让用户手动缩放页面的话)

2. 禁用浏览器自动文本缩放

在CSS的body或者目标元素上添加text-size-adjust属性(包含webkit前缀以兼容旧版本Chrome),强制浏览器保持文本大小为100%:

body {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

这个属性会阻止Chrome在全屏或其他场景下自动放大文本,确保你的CSS字体大小完全生效。

3. 验证效果

加上这两个设置后,再切换全屏模式,字体大小就会和非全屏时保持一致了。你可以在DevTools模拟器和真实移动端Chrome里测试,应该不会再出现字体突变的问题。

额外提示

你代码里的@media (pointer: coarse)#a11y-controls设置了font-size:20px,这个是合理的触屏适配,但要确保这个样式在全屏模式下也能正常继承,不会被浏览器的自动缩放覆盖——上面的两个步骤已经能解决这个问题了。

内容的提问来源于stack exchange,提问作者mmaismma

火山引擎 最新活动