我已经开始使用带有 PX 后备的 REM 单元在一个新站点上工作。现在,我有一个可能很愚蠢的问题,但我找不到任何具体提及它的内容,所以我将继续在这里提问。
使用属性简写和特定属性似乎都加载在浏览器Chrome中生效。
body{ font:16px/23px sans-serif;
font-size:1rem;
line-height:1.438; }
而同时使用速记或同时使用两个特定属性会取消一个或另一个(例如使用主要或后备,而不是两者)
body{ font-family:sans-serif;
font-size:16px; font-size:1rem;
line-height:23px; line-height:1.438; }
或者
body{ font:16px/23px sans-serif;
font:1rem/1.438 sans-serif; }
现在哪一个正是这里的最佳实践?所有示例均有效。速记和特定属性都加载到浏览器Chrome中是否有原因,即使它们的目标是相同的属性?他们实际上都在加载吗?这对浏览器/设备如何呈现样式有任何不利影响吗?
我只通过 Chrome 对此进行了研究,并且无法通过测试辨别出任何差异。但是,如果您必须对使用 rem 的所有元素使用相同代码的两次迭代,您会看到它会变得有点笨重。
更新: 仅在以下所有浏览器的最新版本中测试,所有测试都与第一个代码片段有关
在 Firefox 中,这似乎不是问题,它只是将速记代码中的字体大小/行高替换为 rem 大小。在 IE、safari 和 Opera 中,它采用简码并将其分离为特定属性,但仍会加载 rem 单位而忽略 px 单位。
它似乎是特定于 Chrome 的,至少在现代版本中是这样。所以现在的问题是,如何弄清楚 Chrome 是如何处理它的?显示在这篇文章底部的图像可能会解释更多。看看这两个字体属性是如何加载的,既没有被忽略也没有优先权?
更新#2: 使用边距时,Chrome 会正常运行。我将使用以下“离墙”示例来演示:
margin:16px 0 19px 0;
margin-top:1rem;
margin-bottom:1.188rem;
在 chrome 中读取为:
margin:1em 0 1.188rem 0;
(来源:leftdeaf.com)