posts - 110,  comments - 152,  trackbacks - 0

 

到底谁说了算?
                          CSS样式使用优先级判断

2007年5月27日写的,现在转到这里来。

修正前,再次谢谢hax的指点。最正确的说法:http://www.w3.org/TR/CSS21/cascade.html#specificity 参见这里的相关内容,一下只是我个人偷懒的理解方式,只解决常规情况下的绝大部分问题。不是预期使用的样式,如何判断那个样式会最终起作用呢?到底谁说了算,可以依据下面几个原则:

CSS样式定义多了,常常出现显示效果与预期不一致的情况。其中很大一部分原因在于起作用的样式。

1。多个选择器可能会选择同一个元素,有3个规则,从上到下重要性降低:
      !important的用户样式
      !important的作者样式
      作者样式
      用户样式
      浏览器定义的样式
2。CSS样式的特殊性权重——谁有分量,谁说了算。
CSS规范为不同类型的选择器定义了特殊性权重,特殊性权重越高,样式会被优先应用。
权重设定如下:
html选择器,权重为1;
类选择器,权重为10;
id选择器,权重为100;
这里还有一种情况:在html标签中直接使用style属性,这里的style属性的权重为1000;
即如下情况:
#x34y {color:red}
<.  p id=x34y >  优先选择style=""设定的样式。
其他类型的,大家看看例子就明白了。
例子:
h1{color:blue}  权重为1
p  em{color:yellow}  权重为2
.warning{color:red}  权重为10
p.note em.dark{color:grag}  权重为22
#main{color:black}  权重为100     这里还有一种情况:
权重一样时如何处理?权重一样时就另说了。看看下面的就明白了。

3。CSS样式的层叠原则——谁离我近,谁说了算。
当权重一样时,会采用“层叠原则” 后定义的会被应用。
如:p{color:yellow}
        p{color:red}
作用到这里   <. p >我的什么颜色呢?< /p>
结果会是red的。

4。CSS样式的特殊标记——谁有特权,谁说了算。
如果有人看不顺眼,非得要自己说了算,那可以搞点特权,如下即可
p {color:blue !important;}
加上!important;可将自己权重设为最高。
如果你要问两个!important;设定的样式,那个样式说了算,我说你为什么不自己试试看看呢!

好了,谁说了算的问题就到这里了。



平凡而简单的人一个,无权无势也无牵无挂。一路厮杀,只进不退,死而后已,岂不爽哉!
收起对“车”日行千里的羡慕;收起对“马”左右逢缘的感叹;目标记在心里面,向前进。一次一步,一步一脚印,跬步千里。
这个角色很适合现在的


posted on 2007-12-17 23:44 过河卒 阅读(280) 评论(0)  编辑  收藏 所属分类: W3C/Css/Html

只有注册用户登录后才能发表评论。


网站导航:
 
文章来自: http://www.blogjava.com/ponzmd/ (彭俊-过河卒) 转贴请声明!
访问统计: