我应该让CSS更容易阅读还是优化速度

我应该让CSS更容易阅读还是优化速度,css,css-selectors,Css,Css Selectors,当我在一个小网站上工作时,我决定使用PageSpeed扩展来检查它们是否有一些改进,以使网站加载速度更快。然而,当它告诉我CSS选择器的使用效率很低时,我非常惊讶。我总是被告知应该尽量减少HTML中class属性的使用,但是如果我正确理解PageSpeed告诉我的内容,那么浏览器直接与类名匹配会更有效。这对我来说很有意义,但也意味着我需要在HTML中添加更多的CSS类。它使我的.css文件更难阅读 我通常倾向于这样标记我的CSS: #mainContent p.productDescriptio

当我在一个小网站上工作时,我决定使用PageSpeed扩展来检查它们是否有一些改进,以使网站加载速度更快。然而,当它告诉我CSS选择器的使用效率很低时,我非常惊讶。我总是被告知应该尽量减少HTML中class属性的使用,但是如果我正确理解PageSpeed告诉我的内容,那么浏览器直接与类名匹配会更有效。这对我来说很有意义,但也意味着我需要在HTML中添加更多的CSS类。它使我的.css文件更难阅读

我通常倾向于这样标记我的CSS:

#mainContent p.productDescription em.priceTag { ... }
这使得阅读变得容易:我知道这会影响主要内容,也会影响段落标签中的某些内容,所以我不会在其中加入所有类型的布局代码来描述产品及其需要强调的内容。然而,我似乎应该把它改写为

.priceTag { ... }
将删除有关样式的所有上下文信息。如果我想使用不同格式的价格标签,例如,一个在侧边栏的列表中,一个在段落中,我需要使用类似的东西

.paragraphPriceTag { ... }
.listPriceTag { ... }
这让我很恼火,因为我似乎在我的类中复制了HTML的语义。这意味着我不能把普通的风格放在不合格的作品中

.priceTag { ... }
因此,我需要复制CSS规则中的样式,使其更难进行更改。尽管我可以使用多类选择器,但IE6不支持它们

我认为,为了提高速度,让代码更难阅读,这从来都不是一个很好的做法。当然,除了关键的地方。这就是为什么人们使用PHP/Ruby/C等代替C/assembly来编写站点代码。它更容易编写和调试。所以我想知道我是否应该坚持使用少量的CSS类和复杂的选择器,或者为了速度起见,我是否应该进行优化并删除我的CSS选择器


PageSpeed是否超出了推荐范围?在大多数现代计算机上,它会有什么不同吗?

我个人发现,从长远来看,复杂的选择器更容易混淆,只要确保为类指定适当的名称即可


长选择器将对性能产生影响,因为每次分析流程都需要遍历DOM。在我看来,它有时间和地点,但这是一个例外,不是标准规则。

我个人发现,从长远来看,复杂选择器更容易混淆,只要确保为类指定适当的名称即可

长选择器将对性能产生影响,因为每次分析流程都需要遍历DOM。在我看来,它有时间和地点,但这是一个例外,不是标准规则。

定义优先级

可读性 效率 速度 现在,除了在一个真正特定的projet和复杂的页面上,你不需要混淆你的代码来加速它

首先考虑可维护性

顺便说一句,使用id在可读性和速度方面都是一个很好的实践,因为它不需要遍历所有DOM来找到它。这同样适用于你。

定义你的优先级

可读性 效率 速度 现在,除了在一个真正特定的projet和复杂的页面上,你不需要混淆你的代码来加速它

首先考虑可维护性

顺便说一句,使用id在可读性和速度方面都是一个很好的实践,因为它不需要遍历所有DOM来找到它。你也一样

我应该让CSS更容易阅读还是优化速度

你应该两者都做

您应该编写CSS以使其可读,如果您想折叠它,请使用自动化工具来生成生产CSS

因此,您应该使用可读性好的块,并且发布的文件应该很小

在特定选择器方面

#mainContent p.productDescription em.priceTag { ... }
只有当你有足够的能力时,才能增加价值

p.productDescription em.priceTag { ... }

在您不想影响的其他地方-例如,如果您有一个不想应用样式的secondaryContent p.productDescription em.priceTag

所以如果你想用

em.priceTag
如果将该规则应用于所有对象,您实际上将不会看到任何性能问题。该差异将与通过减少规则中的字符而保存的文件大小差异大致相同

然而。。。不要仅仅因为不想编写正确的规则就用大量class=属性污染HTML

我应该让CSS更容易阅读还是优化速度

你应该两者都做

您应该编写CSS以使其可读,如果您想折叠它,请使用自动化工具来生成生产CSS

因此,您应该使用可读性好的块,并且发布的文件应该很小

在特定选择器方面

#mainContent p.productDescription em.priceTag { ... }
只有当你有足够的能力时,才能增加价值

p.productDescription em.priceTag { ... }
在您不想影响的其他地方-例如,如果您有一个不想应用样式的secondaryContent p.productDescription em.priceTag

所以如果你想用

em.priceTag
如果将该规则应用于所有对象,您实际上将不会看到任何性能问题。该差异将与通过减少规则中的字符而保存的文件大小差异大致相同


然而。。。不要仅仅因为不想编写正确的规则就用大量class=属性污染HTML。

谢谢。这让我担心:添加大量CSS类属性会给页面带来混乱。谢谢。这让我担心:大量的CSS类属性会给页面带来混乱。