嵌套是一项非常强大的功能,但应谨慎使用。它可以非常容易和快速地发生,您可以开始嵌套并继续进行嵌套,嵌套或嵌套中的所有子代。让我示范一下:
// 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就足够了。