id与class优先级问题

在前面的文章里讨论过DIVCSS布局的技巧。在用CSS来控制网页布局时我们可能都会遇到一个问题:当定义一个属性时,是使用id,还是使用class?今天再谈谈id与class的使用原则,把自己平时做站时的经验给大家简要讲述一下,希望能够对大家有所帮助启发。
第一:id的使用原则
  先来说说id,id具有唯一性,其使用原则也是依据这一特性建立的。id是不能重复的,所以在XHTML的结构中,大结构一定是用id。比如标志、导航、主体内容、版权。这些根据制定的规范命名为#logo , #nav , #content , #copyright 等等,本着其唯一性的原则园子建议定义id尽量在外围使用。
第二:class的使用原则
  class在CSS的定义中具有普遍性。说白一点就是class具有可重复无限制的使用多次,园子建议大家尽量在结构内部使用。这样做的好处是有利于网站代码的后期维护与修改,这样的做法就会让所有的class都成为id的子级或是孙级。在我们写CSS的时候可以写成这样 #father .child {…},另外需要注意的是尽量不要让class包含id,比如.father #child {…}如果写成这样很显然就非常不可取。当然这也只是相对于良好书写习惯的一些建议,仅供大家参考。
综上所述,归总起来一句话:id是唯一的并且是父级的,class是可以重复的并且是子级的。保持一个良好的代码书写习惯对于以后的代码维护会有很大的帮助,如果您有更好的建议,欢迎给我留言探讨
id的优点(class的缺点):id写在css用"#"选择器,class写在css中用"."选择器。"#"选择器的优先级高于"."选择器大约10倍,所以当你需要提升优先级的时候,id标签,或者id容器内的标签将是很容易和有效的。而class标签,或者class容器内的标签将可能导致优先级的提升失败。
  id的缺点(class的优点):id应该是唯一的,所以它的可复用性是很差的,而class是可以复用的。所以如果一块东西是多个页面,甚至一个页面都会使用多次的,那么一定要使用class来作为样式选择器。id是唯一的,当一个控件的id的产生是不可控的,那么这个id选择器将失去意义,但是任何一个控件即使是动态产生的,他的cssClass仍然是可定制的,所以当你的这个标签需要用服务器端控件替代的时候,而服务器端控件的id是不确定的,那么请使用class选择器,这样只要将服务器端控件的cssClass设为你class选择器的名称即可。(当然,这个还需要大量的经验的积累,网站布局做的多了就会逐步的改进)

+