【发布时间】:2014-11-14 06:15:09
【问题描述】:
我真正喜欢 LESS 的一个功能是嵌套规则。这样可以使样式表更加简洁,并且您可以非常快速地找到一个元素。
我想知道在编译优化选择器时是否有一个选项。比如……
#global {
/* Styles here maybe */
.container {
/* Styles here maybe */
#sidebar {
/* Styles here maybe */
.title {
font-weight: bold;
}
}
}
}
将编译为#global .container #sidebar .title { font-weight: bold; }。
但是前两个选择器没用,因为#sidebar 在我的页面中应该是唯一的。
有没有办法让 LESS 将其编译为 #sidebar .title { font-weight: bold; }?
【问题讨论】:
-
你的提议不正确;这样的选择器对于排除外部 ID 不存在但内部 ID 存在的页面或状态很有用。
-
此外,指定多个 ID 可能会提升规则的优先级,以防还有一个
#myTitle { font-weight: 300; }属性(只有一个 ID)。当您与像我这样痴迷于 ID 的开发人员一起工作时,拥有这些会很有用。 -
LESS 不能假设
#sidebar在给定页面中总是以#global .container #sidebar出现,即使它在该页面中是唯一的,这就是它不尝试删除前两个选择器的原因默认。但真正的问题是,你为什么要首先将它嵌套在那里?这似乎更像是一个创作错误,而不是预处理器限制。 -
您还在为几毫秒甚至十分之一秒的 CSS 性能优化而烦恼吗?你还有什么好担心的吗?除了正如其他海报所提到的那样,它背后的某个地方是不可能的、一个坏主意、危险的和语义破坏性的?
-
@SamuelBolduc 别担心,这只是一个错误的假设。我实际上赞成这个问题,因为我非常怀疑你是第一个或最后一个考虑这个问题的人。这个问题有充分的根据,问得也很好,你学到了一些东西。也许其他人也会:)
标签: css css-selectors less