高效编写CSS代码的建议汇总

2020-05-02 08:16:42易采站长站整理

The currency symbol for the Euro is “€”.  

  2.9 使用带有语义的id和class

CSS Code复制内容到剪贴板

/* Not recommended: meaningless */  
#yee-1901 {}   
  
/* Not recommended: presentational */  
.button-green {}   
.clear {}   
  
/* Recommended: specific */  
#gallery {}   
#login {}   
.video {}   
  
/* Recommended: generic */  
.aux {}   
.alt {}  

  2.10 省略零值的单位

CSS Code复制内容到剪贴板

margin: 0;   
padding: 0;  

  2.11 省略起始的零

CSS Code复制内容到剪贴板

font-size: .8em;  

  2.12 尽量避免CSS hacks

  尝试换种解决方案

  2.13 为末尾的声明添加分号

  尽管省略末尾分号可以省略一个字节,但是非常不利于团队维护,得不偿失

CSS Code复制内容到剪贴板

/* Not recommended */  
.test {   
  display: block;   
  height: 100px  
}   
  
/* Recommended */  
.test {   
  display: block;   
  height: 100px;   
}  

  2.14 选择器的效率

  浏览器是“从右往左”来分析 class 的,对于下面的规则

CSS Code复制内容到剪贴板

#god > li {font-weight: bold}  

  浏览器会先查找页面上所有的“li”节点,然后再去做进一步的判断:如果它的父节点的 id 为“god”,则匹配成功。由此可知,CSS 选择器的匹配远比我们想象的要慢的多,CSS 的性能问题不容忽视。

  2.15 后代选择器

CSS Code复制内容到剪贴板

#toc li {font-weight: bold}   

  这个效率比之前的“child selector”效率更慢,而且要慢很多。浏览器先便利所有的“li”节点,然后步步上溯其父节点,直到 DOM 结构的根节点(document),如果有某个节点的 id 为“toc”,则匹配成功,否则继续查找下一个“li”节点。

  2.16 尽量避免全局选择器

CSS Code复制内容到剪贴板

[hidden="true"] { … } /* A universal rule */    

  这里的匹配规则很明显:查找页面上的所有节点,如果有节点存在“hidden”属性,并且其属性值为“true”,则匹配成功。这是最耗时耗力的匹配,页面上的所有节点都需要进行匹配运算,这种规则应尽量避免。