css - 嵌套选择器的性能影响和 LESS

标签 css performance optimization css-selectors less

过去 1.5 小时我一直在阅读这方面的内容,但仍然找不到简洁且果断的答案。

据我所知,浏览器从右到左解析 CSS 选择器。

这意味着像这样的长 CSS 选择器:

.card .container .businesscard .pinfo li.pinfo-box span:first-child

是 SO 中出现过的效率最低的代码行之一。

首先,我对这一点是否正确?

其次,我正在使用 LESS 设计一个丰富的 UI,它最终会从我正在编码的嵌套设计中生成这种庞大的选择器。

如何避免这种选择器?单靠类和ID?但是话又说回来,如果你不能编写嵌套的 CSS,那么使用 LESS 的目的是什么?

感谢您的意见。

最佳答案

没错。浏览器从右到左评估选择器。它会尝试在 li.pinfo-box 中找到一个 span 等等。

编写 LESS 时要遵循的一个经验法则是:嵌套不要超过 3-4 层。

这将防止您的选择器变大,同时您仍然可以从 LESS 的嵌套功能中受益。

“无用”嵌套的一个很好的例子是样式列表。有时我会这样写选择器:

#wrapper .blog-post ul, #wrapper .blog-post ul

是否真的有必要指定 li 必须ul 内?写起来可能就足够了:

#wrapper .blog-post li

所有这些都值得了解。但是:在尝试优化您的网站性能时,这并不是首先要深入研究的事情。花一些时间降低请求数量或采取其他措施。

关于css - 嵌套选择器的性能影响和 LESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829959/

相关文章:

jquery 在点击时显示伪元素

c++ - 为什么 boosts 矩阵乘法比我的慢?

php - 避免从慢速查询日志中进行 RAND() 查询

考虑 x^i+y^i=z^i x<=y<=z<=m 和 2<=i<=n (m 和 n 是输入) m 可以在 5 到 100 之间变化 n 可以在 2 到 100 之间变化

IE8 和 FF 4 上的 Css UL UL 问题 - 光盘出现在垂直菜单的第二行

javascript - 用鼠标悬停关闭一个框

jquery - 使用jquery在菜单li中添加事件类

php - 同样的 MySQL 查询在 phpMyAdmin 中需要 0.3 秒,在 PHP 中需要 7.9 秒——为什么?

java - HashMap 与数组搜索时间复杂度

algorithm - 一系列文件的最短压缩时间