css - LESS - 嵌套会生成错误的 CSS 代码?

标签 css less

<分区>

在下面的文章中,我读到应该尝试减少选择器的数量。

Article: use less selectors

我想知道如果编写 LESS 并使用大量嵌套来对父元素和子元素进行分组,最终会生成错误的 CSS 代码吗?

.wrap{
   width: 100%;
   height: 20%;
   background: green;
   header{
           background: blue;
           h1{
                color: red;
             }
         }
 }

最佳答案

I'm using a lot of nesting to group parent and child elements, will that generate bad CSS code in the end?

一句话,是的。从长远来看,这会给你高度具体的、不可维护的 CSS。让我们看看您的示例将为 h1 样式生成什么。

.wrap header h1{ color: red; }

所以您在这里得到的是一个非常具体的 CSS 选择器,这并不是真正必要的。例如,你可以有

h1 { color: red; }

或者在 h1

上使用一个类
.title { color: red; }

为什么特异性不好?

想象一下,6 个月后,另一个开发人员出现了,他们需要更改 h1 的颜色,但只是其中一个。

首先,他们尝试向 h1

添加一个类
.new-color { color: blue; }

但是颜色并没有改变,因为原始的 CSS 非常具体。所以他们必须这样做

.wrap header h1.new-color { color: blue }

或者更糟的是他们可能会这样做

.new-color { color: blue!important; }

然后当需要进行其他更改时会发生什么?正如您可以非常快速和轻松地看到的那样,您最终可能会得到无法维护的 CSS,这会让每个人都抓狂。

性能

人们通常会在谈到 CSS 时否定性能,但了解呈现页面时发生的情况总是好的。 CSS 从右到左阅读。使用你的例子

.wrap header h1 { color: red; }

这意味着浏览器引擎将搜索每个 h1 并检查它们是否有父 header,然后检查是否有父类 wrap。如果是这样,它将应用样式。低特异性使渲染过程更加简单。

总结

所以总而言之,嵌套虽然看起来可以很好地保持代码的美观和可读性,但只应在绝对必要时使用。很容易忘记实际生成的 CSS 是什么样子的。在不知不觉中,您将陷入嵌套 hell 。

关于css - LESS - 嵌套会生成错误的 CSS 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175299/

相关文章:

html - 如何使用css隐藏图像外的背景?

html - 输入元素(由vuetify生成)不会中断长文本的行

html - Polymer.js 和 Less.js

css - 我需要将一个远程文件导入到我的 less 文档中

css - 如何为 grunt-lesslint 设置映射

第一页加载时的 CSS 问题 - Bootstrap 3

html - CSS 'min-width' 增加大于值的表格单元格宽度

html - 添加指向某些内容的链接时,如何防止不必要的更改?

html - Div 显示为表格 inside div 显示为表格

css - 定义新的 CSS 颜色名称