嵌套是一项非常强大的功能,但应谨慎使用。它可以非常容易和快速地发生,您可以开始嵌套并继续进行嵌套,嵌套或嵌套中的所有子代。让我示范一下:
// SCSS
header {
// [css-rules]
.holder {
// [css-rules]
.dropdown-list {
// [css-rules]
ul {
// [css-rules]
li {
margin: 1rem 0 0 1rem;
}
}
}
}
}
// 最后一条规则的CSS输出
header .holder .dropdown-list ul li {
margin: 1rem 0 0 1rem;
}在li从上面的例子中有一个margin组。假设我们要稍后在媒体查询中覆盖它。
@media (max-width: 480) {
// 不管用
.dropdown-list ul li {
margin: 0;
}
// 将工作
header .holder .dropdown-list ul li {
margin: 0;
}
}因此,由于嵌套太深,因此每当要覆盖某个值时,都必须再次嵌套深。更糟糕的是,这通常是规则!important要使用的地方。
@media (max-width: 480) {
// BIG NO-NO,不要这样做
.dropdown-list ul li {
margin: 0 !important;
}为什么!important-rule是个坏主意
您应该以一种很好的方式编写SCSS,以至于这些变通方法甚至根本不需要。!important在这样一个较小的问题上使用,将使您陷入困境!
这与特异性问题相当相似,但值得单独指出。如果您对按钮或什至是下拉菜单等样式进行设置,则可能需要在页面上的其他地方重用这些样式。
嵌套得太深,您的样式将只绑定到位于最外部父元素内的元素(位于SCSS顶部的元素)。这将导致您复制样式并将其再次粘贴到其他位置。可能在其他嵌套规则中。
您的样式表将变得越来越大,并且难以维护。
大多数样式指南将最大深度设置为2。通常,这是一个很好的建议,因为在极少数情况下,您想嵌套得更深。大多数时候,2就足够了。