• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 网页制作 > DIV+CSS特效 >

CSS 性能调优(2)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-02-06点击:

  Multiple Declarations

  关于 CSS 的 class 声明和定义,也有简写的方式

  清单 4. Class 的声明

  1. .Class1{position: absolute; left: 20px; top: 30px;}  
  2. .Class2{position: absolute; left: 20px; top: 30px;}  
  3. .Class3{position: absolute; left: 20px; top: 30px;}  
  4. .Class4{position: absolute; left: 20px; top: 30px;}  
  5. .Class5{position: absolute; left: 20px; top: 30px;}  
  6. .Class6{position: absolute; left: 20px; top: 30px;}  
  7.  
  8.  -------------------->>>>>>>  
  9.  
  10.  .class1 .class2 .class3 .class4 .class5 .class6{  
  11.  Position: absolute; left: 20px; top: 20px;  
  12.  }  

  这种 Class 简写的方式可以极大的缩减我们的代码,提高浏览器分析识别的效率。

  CSS 选择器 (CSS Selectors)

  先来看看下面这个例子:

  清单 5. Child selector

  1. #toc > li {font-weight: bold}  

  按照我们惯常的理解,编译器应该是先查找 id 为“toc”的节点,然后在他的所有直接子节点中查找类型(tag)为“li”的节点,将“font-weight”属性应用到这些节点上。

  但是,不幸的是,恰恰相反,浏览器是“从右往左”来分析 class 的,它的匹配规则是从右向左来进行匹配的。这里,浏览器首先会查找页面上所有的“li”节点,然后再去做进一步的判断:如果它的父节点的 id 为“toc”,则匹配成功。

  由此可知,CSS 选择器的匹配远比我们想象的要慢的多,CSS 的性能问题不容忽视。

  清单 6. Descendant selector

  1. #toc  li {font-weight: bold} 

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

  清单 7. 尽量避免 universal rules

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

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

  清单 8. Id-categorized 规则与 tag name 或 class 规则并行

  1. button#goButton {...};----->>#goButton  
  2. .fundation#testIcon {...};----->>#testIcon  

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ