最近,我偶然发现了一个神秘的 CSS 问题,该问题仅出现在真实的移动设备上,尤其是 iOS Safari。某些字体显得过大,破坏了布局的完整性。尝试通过在开发工具中应用不同的字体大小来解决此问题,甚至使用 !important 也没有效果。您可以在下面看到所需的屏幕显示和我最终看到的屏幕。
经过调查,我发现有时移动浏览器会动态调整字体大小以增强用户的可读性。移动浏览器的呈现行为与桌面浏览器不同。与通常以设备屏幕宽度呈现页面的桌面浏览器不同,移动浏览器通常使用更宽的视口(通常默认设置为 980 像素),以适应未针对较小屏幕进行优化的网站。这必然会导致水平滚动。为了解决这个问题,HTML 中通常采用以下规则,以确保视口缩放以准确地适应设备尺寸。
<meta name="viewport" content="width=device-width, initial-scale=1" />
但是,在缩小以适应移动屏幕时,某些浏览器可能会将文本渲染得太小,从而促使应用文本膨胀算法来放大文本以提高易读性。此算法有时会导致意外的字体放大,特别是当跨越屏幕整个宽度的元素在不改变布局的情况下经历文本大小增大时尤其明显。为了解决此问题并保持跨设备的文本大小一致,我们可以利用 CSS text-size-adjust 属性。
文本大小调整使网络作者能够禁用或调整这种自动文本膨胀行为,这对于考虑小屏幕设计的网站尤其重要(我相信大多数新网站都是如此)。此属性控制某些智能手机和平板电脑上使用的文本膨胀算法。其他浏览器会忽略它。默认大小调整会影响文本和表单控件,无论这些表单控件是否包含文本(例如文本输入、选择)或不包含文本(例如单选按钮、复选框)。
它有 3 个可能的值:
我通过将此属性添加到正文中作为全局 css 样式的一部分(也可以添加到 html 中)解决了文本膨胀问题。我建议将此规则添加到您的全局/重置/规范化 css 文件中:
body { // prevent font-size inflation on small devices text-size-adjust: 100%; -ms-text-size-adjust: 100%; -moz-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
仅适用于 iOS safari -webkit-text-size-adjust 有效,但我包含了其他供应商和非供应商属性以添加对其他浏览器的支持。在开始时添加非供应商属性非常重要。如果在末尾添加,在 Safari iOS 中它将覆盖 -webkit ,并且由于不支持它,因此不会应用它,因此一切将按默认工作。
其他需要记住的注意事项:
几个流行的 CSS 重置/规范化库包含一些文本大小调整的变体。
感谢您的阅读!?如果您愿意阅读更多相关内容,这里还有其他资源。
drafts.csswg.org
网络参考
developer.apple.com。
以上是您在全局样式中使用文本大小调整吗?的详细内容。更多信息请关注PHP中文网其他相关文章!