回答
当涉及到性能,史蒂夫Souders的是的人:
的:
从报告一个无耻报价优化CSS选择器的关键是 专注于最右边的选择器, 也被称为密钥选择器 (重合?)。这里有更多 昂贵的选择器:A.class0007 * {}。 虽然此选择器可能看起来更简单,但 浏览器的价格更高。因为浏览器 从右向左移动,它开始于 检查所有匹配 键选择器“*”的元素。这意味着 浏览器必须尝试将此 选择器与 页面中的所有元素进行匹配。
[大胆重点煤矿]
我也引用“很明显,CSS选择器与一个与许多元素相匹配的按键选择器会显着减慢网页速度。”有趣的阅读,谢谢。 – gpilotino 2009-11-11 10:46:14
我更喜欢这句话“基于这些测试,我有以下假设:对于大多数网站来说,优化CSS选择器可能带来的性能收益会很小,并且不值得花费。” – arkanciscan 2015-10-18 04:22:25
@arkanciscan这是idd非常真实。优化CSS选择器可能是过早优化的最佳案例之一。 – anddoutoi 2015-10-19 07:38:03
由于我使用的是在每一个我的项目完全相同的规则,并没有产生严重的性能比较的问题,我会说:不,不是因为据我所知。
一种观点认为,它不是那么多*是一个性能问题,这是很好的旧喜欢 - 它有一个IE问题。它影响IE 5,5.5和6以及Macintosh变体。基本上,有一些所谓的HTML明星选择错误,这适用如下:
* html
这应该被理解为没有元素匹配,因为HTML是根,不能是一个子元素。 IE将此解释为html。
* * body
再一次,应该匹配到没有元素,因为身体不能是孙子元素 - 即使它是HTML的子元素。 IE将此解释为* body。
* html body
这应该不匹配任何元素,但IE将此解释为html正文。
性能方面通常认为应用*仅意味着该样式适用于页面中的每个元素。我很少发现这本身就是一个问题 - 它将成为一个问题的意义在于,无论如何你可能在这方面有太多的标记。同样,它适用于所有内容,这意味着您需要增加代码来处理不应该拥有该风格的元素。和其他一切一样,决定什么是权衡和平衡应该由您决定。
我不会说这是一个错误,但在这种情况下的开发人员错误 – Jonathan 2015-11-04 12:51:47
对于一些使用*
的属性可能会产生意想不到的结果。
* { color: blue }
li { color: red }
现在给出<li><i>text</i></li>
,文本将是蓝色!
是的,但是当你设置'*'的属性时,你可能不会想到它*。用'*'和你很少使用的界面元素或元素,这是更真实的。 – Boldewyn 2009-11-11 10:15:54
@ ApoY2K:仅仅因为它的运作方式应该是这样,并不意味着它是预期的。当你有一个*选择器时很容易忘记它。当你记得时,你必须仔细考虑**每次你添加一个新的元素**来检查你是不是应用你不想要的样式。 – DisgruntledGoat 2009-11-11 10:40:45
@ApoY2k:当然,如果你是完美的,永远不会犯错误,你永远不会写出不符合预期的代码。否则,认为该颜色是从父代继承是合理的,这就是红色以外的文本是意外的。 – 2009-11-11 10:50:49
- 1. 为什么多线程环境被认为是有害的?
- 2. 'make install'被认为是有害的吗?
- 3. 字母O被认为是有害的?
- 4. 为什么我的CSS选择器被转换为大写IE
- 5. PKG_CHECK_MODULES认为有害?
- 6. NSCopyObject认为有害?
- 7. 究竟选择这个CSS选择器是什么?为什么我有这种行为?
- 8. 为什么'\\'被认为是int?
- 9. jQuery选择器中的变量和字符串连接 - 它被认为是有害的吗?
- 10. 使用“break”打破“for”循环被认为是有害的?
- 11. JQuery CSS选择器奇怪的行为,为什么?
- 12. 风格认为有害?
- 13. PHP sprintf认为有害?
- 14. 这:悬停选择器没有被应用 - 为什么?
- 15. 为什么使用TransactionScope的默认构造函数有害?
- 16. 这是否被认为是上下文选择器?
- 17. Mac OSX? Linux呢? X?侏儒? KDE?为什么osx被认为是linux,为什么它不被认为是linux?
- 18. 为什么Angular默认不选择正确的选择选项?
- 19. 这是什么样的CSS选择器?这是什么意思?
- 20. 什么被认为是C++语句?
- 21. Syntactic Sugar为什么有时被认为是坏事?
- 22. 为什么我的首选CSS字体没有被使用?
- 23. 星号(*)在CSS选择器中做什么?
- 24. CSS选择器优先级 - 为什么td高于伪选择器?
- 25. 为什么我的Cocoa选择器实际上不被调用?
- 26. 为什么Chrome会忽略我的CSS选择器?
- 27. 为什么我的CSS ID选择器不工作?
- 28. 还有什么被认为是Android的沉重任务?
- 29. 在MySQL中为varchar选择一个大值会有什么危害吗?
- 30. 为什么这个班级被认为是最终的?
在你听到什么情况下,这是“有害”?以某些方式使用时,根据浏览器的不同可能会有不同的表现(例如,考虑'* html {}')。 – Blixt 2009-11-11 09:42:14
我问这也是因为我看到“标准事实上”的CSS重置方法避免使用它。 – gpilotino 2009-11-11 10:42:43