热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> 网页标准>>正文内容

了解CSS的查找匹配原理,让CSS更简洁、高效

发布时间:2010年06月08日点击数: 佚名

  浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。比如之前说的 DIV#divBox p span.red{color:red;},浏览器的查找顺序如下:

  1. <style> 
  2.       DIV#divBox p span.red{color:red;} 
  3.     <style> 
  4.     <body> 
  5.       <div id="divBox"> 
  6.         <p><span>s1</span></p> 
  7.         <p><span>s2</span></p> 
  8.         <p><span>s3</span></p> 
  9.         <p><span class='red'>s4</span></p> 
  10.       </div> 
  11.     </body> 

如果按从左到右查找,哪会先查找到很多不相关的p和span元素。而如果按从左到右的方式进行查找,则首先就查找到<span class='red'>的元素。firefox称这种查找方式为key selector(关键字查询),所谓的关键字就是样式规则中最后(最右边)的规则,上面的key就是span.red。

简洁、高效的CSS:
      所谓高效的CSS就是让浏览器在查找style匹配的元素的时候尽量进行少的查找,下面列出一些我们常见的写CSS犯一些低效错误(也是我以前常常犯的错误,还老以为这样写才是高效的):

 1.不要在ID选择器前使用标签名
   一般写法:DIV#divBox
   更好写法:#divBox
   解释: 因为ID选择器是唯一的,加上div反而增加不必要的匹配。

  2.不要再class选择器前使用标签名
   一般写法:span.red
   更好写法:.red
   解释: 同第一条,但如果你定义了多个.red,而且在不同的元素下是样式不一样,则不能去掉,比如你css文件中定义如下:
       p.red{color:red;}
       span.red{color:#ff00ff}
       如果是这样定义的就不要去掉,去掉后就会混淆,不过建议最好不要这样写

  3.尽量少使用层级关系
   一般写法:#divBox p .red{color:red;}
更好写法:.red{..}

4.使用class代替层级关系
一般写法:#divBox ul li a{display:block;}
更好写法:.block{display:block;}     

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作