CSS选择器 - 性能的探究及提升

  【本博客为原创:http://www.cnblogs.com/HeavenBin/   

前言:

  在工作中编写CSS样式表时随着选择器层数的增加总会看到选择器又丑又长的情况,利用工作之余研究从其命名再到如何提高其性能。本博客将以“通俗易懂”、“简洁””的方式来探究CSS选择器的性能,以及叙述总结如何提升CSS选择器的性能。(2017-8-20)

一. CSS选择器性能是如何消耗的?

工作原理:浏览器利用CSS选择器来匹配文档元素。

工作流程:例如 #hd .nav > a { padding-left: 15px }

  1.在文档所有元素中寻找所有的 a 标签。

  2.在1的结果中寻找其父元素的类名为“.nav”的元素。

  3.在2的结果中寻找其父辈元素的ID为“hd”的元素。

  4.在3的结果中增加样式。

二. 分析怎么提升CSS选择器的性能?

在工作流程中可以看出有两个方面可以提升性能:寻找的效率和寻找的次数

效率:选择器的搜索个数,个数越少性能越好。

次数:选择器的层数,层数越少性能越好。

三. 提升CSS选择器性能的方式

方式一(减少搜索个数):选择效率高的选择器,参考如下建议多用类选择器少用标签选择器。

CSS选择器搜索个数从少到多的排序:
  id选择器(#myid)
  类选择器(.myclassname)
  标签选择器(div,h1,p)
  相邻选择器(h1+p)
  子选择器(ul > li)
  后代选择器(li a)
  通配符选择器(*)
  属性选择器(a[rel="external"])
  伪类选择器(a:hover, li:nth-child)

方式二(减少层数):使用BEM(block_element-modifier)的命名方式。

BEM:块(block)、元素(element)、修饰符(modifier)

例如:

  .hd{}

  .hd_nav{}

  .hd_nav_a{}

  .hd_nav_a-link{}

  .hd_nav_a-visited{}

方式三(减少层数):使用面向属性的命名方式。

面向属性:以“样式属性的功能”来给选择器命名。

例如:

  .l{ float: left }

  .tc{ text-align:center; }

  .auto{ margin-left:auto; margin-right:auto; }

未完待续.....

  如果您认为这篇文章还不错或者有所收获,您可以通过扫描一下下面的支付宝二维码 打赏我一杯咖啡【物质支持】,也可以点击右下角的【推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力

时间: 2024-10-25 13:42:27

CSS选择器 - 性能的探究及提升的相关文章

CSS选择器性能差异

(1)选择器是从右到左进行规则匹配. (2)选择器的执行效率从高到低排序: ID选择器:         class选择器:       标签选择器: 相邻选择器 +:      子选择器 >:          后代选择器: 通配符选择器 *:     属性选择器 []:      伪类选择器 :: (3)选择器性能的提升方法: 1)避免使用通配符选择器: 2)避免使用标签或class选择器限制ID选择器: 3)避免使用标签限制class选择器: 4)避免使用多层标签选择器.用class选择器

前端性能优化:CSS 选择器性能

CSS选择器效率: CSS选择器具有高效的继承性,引用Steve Souders的话, CSS选择器效率从高到低的排序如下: ID选择器 比如#header 类选择器 比如.promo 元素选择器 比如 div 兄弟选择器 比如 h2 + p 子选择器 比如 li > ul 后代选择器 比如 ul a 7. 通用选择器 比如 * 属性选择器 比如 type = "text" 伪类/伪元素选择器 比如 a:hover 组合选择器 你可以有一个标准的选择器比如 #nav,来选择任何带

编写高效的css选择器

css选择器的匹配规则是从右向左.和常规思维不同. css选择器限制个数最好不超过4层. Google 资深web开发工程师 Steve Souders 对 CSS 选择器的执行效率从高到低做了一个排序: 1.id选择器(#myid) 2.类选择器(.myclassname) 3.标签选择器(div,h1,p) 4.相邻选择器(h1+p) 5.子选择器(ul > li) 6.后代选择器(li a) 7.通配符选择器(*) 8.属性选择器(a[rel="external"]) 9.

25 May 18 HTML-Tabel标签 CSS介绍 CSS选择器

25 May 18 一.table标签(标记一段数据为表格) #1.作用:表格标签是一种数据的展现形式,当数据量非常大的时候,使用表格的形式来展示被认为是最清晰的 #2.格式 <table> <tr> <td></td> </tr> </table> tr代表表格的一行数据 td表一行中的一个单元格 #3.注意点: 表格标签有一个边框属性,这个属性决定了边框的宽度.默认情况下这个属性的值为0,所以看不到边框 #4表格属性 a.宽度和高

HTML教程-CSS选择器-李南江

配套视频下载地址 CSS选择器 标签选择器 什么是标签选择器? 作用: 根据指定的标签名称, 在当前界面中找到所有该名称的标签, 然后设置属性 格式: 标签名称{   属性:值; } 注意点: 标签选择器选中的是当前界面中所有的标签, 而不能单独选中某一个标签 标签选择器无论标签藏得多深都能选中 id选择器 什么是id选择器? 作用: 根据指定的id名称找到对应的标签, 然后设置属性 格式: #id名称{   属性:值; } 注意点: 每个HTML标签都有一个属性叫做id, 也就是说每个标签都可

jQuery原理系列-css选择器实现

jQuery最强大的功能在于它可以通过css选择器查找元素,它的源码中有一半是sizzle css选择器引擎的代码,在html5规范出来之后,增加了document.querySelector和document.querySelectorAll直接查找元素,如果是做移动端开发的,使用jQuery的必要性大大降低. 用js代码实现css选择器,必然是用正则表达式来识别字符串了,当然浏览器提供的原生api 效率更高,以下代码只做原理性展示,并未优先性能, 例如 1)查找id显然是用document.

CSS的性能优化

---恢复内容开始--- 作者:徐尤熙链接:https://www.zhihu.com/question/19886806/answer/80432295 [CSS代码重构与优化之路] 写CSS的同学们往往会体会到,随着项目规模的增加,项目中的CSS代码也会越来越多,如果没有及时对CSS代码进行维护,CSS代码不断会越来越多.CSS代码交错复杂,像一张庞大的蜘蛛网分布在网站的各个位置,你不知道修改这行代码会有什么影响,所以如果有修改或增加新功能时,开发人员往往不敢去删除旧的冗余代码,而保险地增加

CSS选择器及其优先级

一:一些普通的选择器 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <link href="MyCss.css" type="text/css" rel="stylesheet"> </head> &l

CSS选择器、CSS hack及CSS执行效率

主要内容: 1.CSS选择器.优先级与匹配原理 2. CSS 引入的方式有哪些 ? link 和 @import 的区别是 ? 3.CSS hack 4.如何书高效CSS  一.CSS选择器.优先级与匹配原理     CSS选择器大概可以分为:1.id选择器(#myid)  2.类选择器(.myclassname)  3.标签选择器(div,h1,p)  4.相邻选择(h1+p)6.后代选择器(li a)7.通配符选择器(*)  8.属性选择器(a[rel='externaml']) 9.伪类选