css 选择器性能的取舍。和大量标签带有都是class

转载自:https://segmentfault.com/q/1010000003749652

近期刚好在整理选择器性能相关的知识点,内容如下:

选择器效率从高到低的排序列表:

id选择器(#id)

类选择器(.className)

标签选择器(div,h1,p)

相邻选择器(h1+p)

子选择器(ul > li)

后代选择器(li a)

通配符选择器(*)

属性选择器(a[rel="external"])

伪类选择器(a:hover,li:nth-child)

决定选择器性能的几个点:

首先选择器对性能的影响源于浏览器匹配选择器和文档元素时所消耗的时间,所以优化选择器的原则是应尽量避免使用消耗更多匹配时间的选择器。

但是想用更快的选择器之前,还要了解选择器的匹配机制,事实上,浏览器读取选择器时,不是按照我们的阅读习惯从左到右,而是遵循的从选择器的右边到左边进行读取的。

那么最右侧的选择器对于性能就起着关键性的作用,它是最先开始查找的,如果最右侧是#id选择器那么性能就很高,如果是标签选择器那么性能就会大打折扣。

最后回答你的问题:

1、class和id选择器性能最好,其他选择器我看网上说建议不要用

虽然id选择器的性能最好,但是因为一个页面内不能出现相同的ID,所以也不可常用。那么最常用的应该就是class类选择器,但是遇到li、td、dd等经常大量连续出现的元素,应该采用class类选择器结合后代选择器进行选择,如.nav > li,而不是在每一个元素上引用class类。

2、那么这样的话html文档就会有大量的带有class标签了

页面中出现大量的class类是最麻烦的,不仅难以维护,而且复用性是最差的,最头疼的还时常因为选择器优先级问题导致定义的属性值失效,所以这种做法没有任何意义,既没有提高性能,也会造成很多麻烦。

3、对于大量的带有class标签 和 选择器性能比起来。怎么取舍呢?大量class标签会也会影响性能吗?

不要太在乎选择器性能,请根据上述的选择器性能优化的方向,大胆灵活运用所有的选择器,多了解CSS的特性,慢慢你的CSS代码就不会被这些问题所困扰了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,798评论 19 139
  • 1.CSS 元素选择器 最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。如果设置 H...
    饥人谷_小侯阅读 4,346评论 0 1
  • 字数2002,阅读时间6分钟 01 穷人越来越穷,富人越来越富。究竟是什么原因? 我们会很自然地想到,富人拥有更好...
    炎冰怎么说阅读 4,162评论 0 1
  • ctrl+shift+u/图像——调整——去色
    jlnbda3488375阅读 975评论 0 0
  • 可能前面走着的是一位姑娘 朦胧的烟雨扰乱了我的视线 可能前面走着的是一位姑娘 泛黄的油纸伞遮住了她的身影 可能前面...
    輖憨憨阅读 1,287评论 0 2