为什么 iOS Chrome 与 iOS Safari 上的字体大小不同?

Why is font-size different on iOS Chrome v. iOS Safari?

我正在开发一个响应式网站,当我在 iPhone 上查看它时(iOS 13,2020 年 6 月)我发现 Safari 和 [=26= 之间的字体大小不同].

我尝试了几种方法来解释它,但找不到原因。

我怀疑它与我很久以前的一些 CSS 有关:-webkit-text-size-adjust: 100%; 删除和更改此值对差异没有影响,所以它是一个红色鲱鱼。

什么会导致同一网站的呈现与这两个应用程序 CSS 之间的差异?

这里有两个潜在的原因,肯定还有更多,但这些是我发现并解决了我的问题。

Chrome 遵守系统范围的“文本大小”

如果您使用控制中心的“文本大小”滑块,或系统级别的相关设置,Chrome 会自动更改网站的文本!

据我所知,Chrome 中没有设置 iOS 来禁用与 文本大小 的链接。

因此,如果您希望 Safari 和 Chrome 匹配,请确保您的 phone 的 Font Size 状态处于标记的中间位置作为“默认”。

如果您像我一样日常使用 文本大小 控件,或者您的用户或客户使用

Safari 在“设置”应用中有一个“页面缩放”设置

另一方面,Safari 有一个名为 页面缩放 的设置,从 50% 到 300%。它位于 设置 应用程序的 Safari > 网站设置 > 页面缩放.

此设置可能会导致 CSS 布局在 200% 这样的尺寸下完全混乱。

无论如何,如果两个应用程序之间存在差异,这个 页面缩放 设置也值得一试。

感谢您为我指明了正确的方向 - 我一直在解决为什么 Chrome 在我的 iPhone SE 上渲染的文本比 Safari 大的问题!

我似乎没有 文字大小 的“默认”设置(设置 > 显示和亮度 > 文字大小) .

然而,-webkit-text-size-adjust: 100% 确实对我有用 - 至少对 Chrome 是我苦苦挣扎的地方。

在iOS13中,Safari将media font-size暴露给最终用户,这意味着在你的根页面(html标签)中css"font-size " 规则被用户强制覆盖,无法更改。

并且 Chrome 对于 Safari 没有像 Android 使用渲染引擎“Blink”,它使用 Safari webKit 渲染引擎,所以 Chrome 对于 iOS 是“野生动物园”

无论如何,您可以对此做出反应,调整您的媒体查询以使用“em”单位而不是“px”,换句话说:

  1. 将bootstrap(如果使用)断点更改为“em”而不是默认像素。
  2. 使您的组件边框、填充和其他内容基于像素。

另一种方法是在需要调整字体大小之前了解用户的需求并做出反应:

  1. 根据视口调整字体大小(css 钳制)
  2. 使用响应式布局
  3. 使用css border-box, box-shadow...

另一种方法是重新计算所有内容,但代价很大:

What if the user changes the root’s font size?