我正在开发一个 CSS 预处理器,这意味着我拥有决定输出 HTML的神力。我无法找到有关浏览器如何将样式应用于较低级别元素的信息。哪一个更好?
假设我有width: 100%并且我必须将其应用于多个元素。
body { width: 100%; }
header { width: 100%; }
footer { width: 100%; }
也可以这样写:
body, header, footer { width: 100%; }
这使得 CSS 的大小变小了。但是,这也意味着如果我想对页脚应用另一种样式,例如,我最终会得到这样的结果:
body, header, footer { width: 100%; }
footer { font-size: 23px; }
这是一个问题 - 页脚元素在 CSS 中写了两次,这是否意味着浏览器会更慢地解析它:
body, header { width: 100%; }
footer { width: 100%; font-size: 23px; }
我相信选择器的组合是一件好事。但是,当预处理器开始实现它时,它将输出如下样式:
.login-box { margin-top: 10px; }
.login-box { font-weight: bold; }
那是因为它认为会有另一个元素匹配margin-top:例如10px 。那么,这是不是一个问题。我的意思是如果我有很多
.login-box { margin-top: 10px; }
.login-box { font-weight: bold; }
并不是所有东西都集中在一个地方:
.login-box { margin-top: 10px; font-weight: bold; }
PS问题不是关于特异性
==================== 编辑01 ====================
这是一些SASS代码:
%full-width {
width: 100%;
}
%margin-reset {
margin: 0;
}
body {
@extend %full-width;
@extend %margin-reset;
}
输出是
body {
width: 100%;
}
body {
margin: 0;
}
所以,问题是:这实际上是否正确。如果预处理器输出不是更好:
body {
width: 100%;
margin: 0;
}