:last-child选择器对性能有害吗?

时间:2013-04-22 09:48:00

标签: css performance css3 css-selectors

我多次使用:last-child选择器,主要是在列表中使用border-bottom时,我对最后一个孩子使用border: none;,或使用边距时。所以我的问题是,:last-child选择器从性能的角度来看是不是很糟糕?

我也听说它已从CSS2规范中删除,因为使用:first-child很容易让浏览器检测到,但是为了检测:last-child,它需要循环回来。

3 个答案:

答案 0 :(得分:11)

如果因为性能问题而从CSS2推迟,但在Selectors 3中重新引入,我怀疑这是因为性能不再是以前的问题。

请注意:last-child权威唯一方式来选择父级的最后一个孩子(显然除:nth-last-child(1)之外)。如果浏览器实施者不再有性能问题,我们也不应该作为作者。

我可以考虑使用:first-child而不是:last-child覆盖边框样式的唯一令人信服的理由是允许与IE7和IE8兼容。如果这提高了性能,那就让它成为副作用。如果您不需要 IE7和IE8支持,那么您不应该被迫使用:first-child而不是:last-child。即使浏览器性能绝对至关重要,您也应该通过测试和基准测试以正确的方式解决它,而不是过早优化。

答案 1 :(得分:3)

一般来说,核心CSS选择器运行良好,我们大多数人不应该担心使用它们。是的,其中一些确实比其他人表现更差,但即使表现最差的也不太可能成为您网站的主要瓶颈。

除非你已经完善了其他所有内容,否则我建议不要担心这一点。使用YSlow等分析工具查找您网站上的真实性能问题并修复这些问题。

在任何情况下,即使给定的CSS选择器(或任何其他浏览器功能)存在显着的性能影响,我也会说浏览器制造商有责任修复它,而不是你的解决方案。< / p>

答案 2 :(得分:-1)

我相信它仍然是让最后一个孩子最简单,最低效的方式。 我的意思是,所有其他方式来获得最后一个孩子的表现会更差,因为之前W3C社区不会做任何工作。