CSS优先级
2014-12-30 10:20
183 查看
1、最近遇到了一个奇葩的事情,本地采用内部样式表,替代由公共组开发的css样式文件,然而始终没效果,后来
添加了!important才行
div.bDiv tr:hover td,div.bDiv tr:hover td.sorted,div.bDiv tr.trOver td.sorted,div.bDiv tr.trOver td
{
background: #FFF !important;
border-left: 1px solid #eef8ff;
border-bottom: 1px dotted #a8d8eb;
}
2、css !important作用是提高指定CSS样式规则的应用优先权。
ie6不完全支持!important IE支持重定义中的!important,例如: .yuanxin {color:#e00!important;} .yuanxin {color:#000;} 3、!important 规则是例外
当!important 规则被应用在一个样式声明中时,该样式声明会覆盖CSS中任何其他的声明, 无论它处在声明列表中的哪个位置. 尽管如此, !important规则还是与优先级毫无关系使用!important不是一个好习惯,因为它改变了你样式表本来的级联规则,从而难以调试。 一些不成文规则
不要在全站范围的css中使用!important.
只在需要覆盖全站范围的css或是外部css(例如引用的ExtJs或是YUI)的时候才在指定的页面上使用 !important。
不要在你的插件中使用!important。
永远都要优先考虑使用样式规则的优先级来解决问题而不是 !important。
4、
怎样覆盖掉 !important
很简单,你只需要再加一条 !important 的CSS语句,将其应用到更高优先级的选择器(在原有基础上添加额外的标签、class或id选择器)上;或是保持选择器一样,但添加的位置需要在原有声明的后面(优先级相同的情况下,后边定义的会覆盖前边定义的)。
5、
CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数字串(注:CSS2 中是用三位)来表示,最后以 Specificity 的高低判断 CSS 的优先权。
Specificity 具体的计算规则:
元素的 style 样式属性,加 1,0,0,0。
每个 ID 选择符(#id),加 0,1,0,0。
每个 class 选择符(.class)、每个属性选择符(例 [attr=”"] )、每个伪类(例 :hover),加 0,0,1,0。
每个元素或伪元素(例 :firstchild)等,加 0,0,0,1。
其他选择符(例 全局选择符 *,子选择符 >),加 0,0,0,0。
最后逐位相加数字串,得到最终的 Specificity 值,按照从左到右的顺序逐位比较。
除了 Specificity 还有一些其他规则:
!important 声明的规则高于一切,如果 !important 声明冲突,则比较优先权。
如果优先权一样,则按源码中“后来者居上”的原则。
由继承而得到的样式属性不参与 specificity 的计算,低于一切其他规则(例 全局选择符 * )。
添加了!important才行
div.bDiv tr:hover td,div.bDiv tr:hover td.sorted,div.bDiv tr.trOver td.sorted,div.bDiv tr.trOver td
{
background: #FFF !important;
border-left: 1px solid #eef8ff;
border-bottom: 1px dotted #a8d8eb;
}
2、css !important作用是提高指定CSS样式规则的应用优先权。
ie6不完全支持!important IE支持重定义中的!important,例如: .yuanxin {color:#e00!important;} .yuanxin {color:#000;} 3、!important 规则是例外
当!important 规则被应用在一个样式声明中时,该样式声明会覆盖CSS中任何其他的声明, 无论它处在声明列表中的哪个位置. 尽管如此, !important规则还是与优先级毫无关系使用!important不是一个好习惯,因为它改变了你样式表本来的级联规则,从而难以调试。 一些不成文规则
不要在全站范围的css中使用!important.
只在需要覆盖全站范围的css或是外部css(例如引用的ExtJs或是YUI)的时候才在指定的页面上使用 !important。
不要在你的插件中使用!important。
永远都要优先考虑使用样式规则的优先级来解决问题而不是 !important。
4、
怎样覆盖掉 !important
很简单,你只需要再加一条 !important 的CSS语句,将其应用到更高优先级的选择器(在原有基础上添加额外的标签、class或id选择器)上;或是保持选择器一样,但添加的位置需要在原有声明的后面(优先级相同的情况下,后边定义的会覆盖前边定义的)。
5、
CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数字串(注:CSS2 中是用三位)来表示,最后以 Specificity 的高低判断 CSS 的优先权。
Specificity 具体的计算规则:
元素的 style 样式属性,加 1,0,0,0。
每个 ID 选择符(#id),加 0,1,0,0。
每个 class 选择符(.class)、每个属性选择符(例 [attr=”"] )、每个伪类(例 :hover),加 0,0,1,0。
每个元素或伪元素(例 :firstchild)等,加 0,0,0,1。
其他选择符(例 全局选择符 *,子选择符 >),加 0,0,0,0。
最后逐位相加数字串,得到最终的 Specificity 值,按照从左到右的顺序逐位比较。
除了 Specificity 还有一些其他规则:
!important 声明的规则高于一切,如果 !important 声明冲突,则比较优先权。
如果优先权一样,则按源码中“后来者居上”的原则。
由继承而得到的样式属性不参与 specificity 的计算,低于一切其他规则(例 全局选择符 * )。
相关文章推荐
- CSS的4种引入方式及优先级
- CSS优先级
- CSS部分属性,样式表,优先级
- 关于css优先级的问题
- CSS 的优先级机制讨论
- css叠加优先级问题
- 选择权优先级+css特效(含图解)
- css —— 选择器优先级及jQuery遍历元素常用方法
- 【CSS优先级】多个CSS样式设置同样属性时,画面到底会用哪一个CSS(important并非唯一方法)
- css样式优先级
- CSS 的优先级机制[总结]
- CSS 选择器的优先级顺序
- CSS 选择器优先级【6种】
- css优先级阐述
- css优先级
- HTML/CSS 选择符优先级
- 层叠样式优先级CSS
- CSS样式优先级机制
- CSS优先级
- CSS 的优先级机制[总结]