important终级讲解

本文通过两个实例探讨了Internet Explorer浏览器对CSS中!important规则的支持情况,并解释了它如何影响样式的优先级。

      很多人,包括很多网站(我所见过的所有网站,包括国内著名的‘网页设计师’网站),都说important是不被IE所支持和认识的,可是真的是这样吗?看了下边的两个例子,也许你会改变一些看法!


例一:

 
CSS
 

#box  {
     color:red !important;
     color:blue;
  }


HTML

<div id="Box">  在不同的浏览器下,这行字的色应该不同! </div>


          这个例子应该是大家经常见到的important的用法了,在IE环境下,这行字是蓝色,在firefox下,为红色,其用法不再多说了,看下一个例子。

例二:

CSS

1  #box div {
      color : red ;
  }
2  .important_false {
      color : blue ;
}
3 .important_true {
      color : blue !important ;
}

HTML
<div id="Box">
    
<div class="important_false">这一行末使用important</div>
    
<div class="important_true">这一行使用了important</div>
</div>


 
         例二中,CSS代码第一行设定了box里面所有div中字体色为红色,第二行和第三行都用class重新定义了自身div的字体色为蓝色,不同的是,第二行末使用important,而第三行使用了!

         默认情况下,class的优先级小于id,所以,第二行中即使用class重定义了自身样式,也无法生效,所以继承父级属性,这行字还是红色!

         但是,第三行中,用了important提升优先级(或看成强制重定义),所以这里的css得以生效,这行字变为了蓝色!

         从这个例子,得以证明,ie对important的并不是不支持!

            
那么为什么很多人都说ie不认识它呢?我想应该是大家实战中可能都没有遇到例子中的情况: 当你想提升class的优先级时怎么办?

           也就是说大家可能都忽略了它的这一作用,只了解在命名为同一个元素的CSS代码块中,用它来提升排列顺序相对靠前的代码的优先级(例一)!

        通过上边两个例子,得以总结:

        important对 一个良好(或者是标准)的浏览器来说,不仅仅是从顺序上提升代码的优先级,还可以用来提升class的优先级(比如firefox),但是从IE对前者的不支持可以看出,这只是IE的一大BUG,而不能说它“不认识、不支持”!

         然而,不管怎么样,IE的这一大BUG帮助我们解决了很多兼容性问题,这显然不是件坏事!

 

转自:http://www.blogjava.net/raven/archive/2006/03/09/34399.html

相关文章:http://forest.blogbus.com/logs/2006/03/2026348.html,

http://forest.blogbus.com/s1105941/

### CSS `!important` 的使用方法及优先规则 #### 什么是 `!important` 在 CSS 中,`!important` 是一种声明方式,用于提高指定样式的优先。当某个样式被标记为 `!important` 后,它会在渲染过程中获得更高的权重,从而覆盖其他未标注 `!important` 的样式[^2]。 #### 基本语法 `!important` 应放置在样式值之后,并位于分号之前。以下是基本的书写格式: ```css selector { property: value !important; } ``` 例如: ```css p { color: red !important; } ``` 在这个例子中,即使有更高优先的选择器试图修改 `<p>` 元素的颜色,由于存在 `!important`,颜色仍会被设置为红色[^3]。 #### 权重计算规则 CSS 样式表中的优先由以下几个因素决定: 1. **选择器特异性** 不同类型的选择器具有不同的权重。ID 选择器的权重高于类选择器,类选择器又高于标签选择器。 2. **层叠顺序** 如果两个规则具有相同的权重,则后定义的规则会覆盖先定义的规则。 3. **`!important` 关键字** 当某条规则带有 `!important` 时,其优先将超过任何普通的 CSS 规则,无论后者的选择器特异性如何[^1]。 ##### 示例说明 以下是一个简单的对比案例: ```css /* 普通规则 */ #box { color: blue; } /* 高特异性的普通规则 */ .box-class { color: green; } /* 带有 !important 的低特异性规则 */ body p { color: red !important; } ``` 假设 HTML 结构如下: ```html <div id="box" class="box-class"> <p>测试文字</p> </div> ``` 最的文字颜色将是红色,因为尽管 `.box-class` 和 `#box` 的特异性较高,但 `body p` 的规则包含了 `!important`,因此优先最高[^2]。 #### 浏览器兼容性 需要注意的是,在 IE6 及更早版本中,`!important` 并不会生效。这意味着如果在一个规则集中同时定义了带和不带 `!important` 的相同属性,IE6 将忽略 `!important` 的部分并应用最后一条规则[^4]。 解决方案之一是通过重新定义规则的方式使 IE6 支持 `!important`。例如: ```css div { background: yellow !important; } div { background: green; } ``` 在这种情况下,即使是 IE6 也会显示黄色背景,因为它只认定了第一条有效的规则[^2]。 #### 使用建议 虽然 `!important` 提供了一种强大的工具来强制执行某些样式,但在实际开发中应谨慎使用。过度依赖可能导致维护困难以及意外的行为冲突。推荐仅在必要场景下采用,比如需要临时修复第三方库引入的问题或者处理特殊情况下的样式覆盖需求[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值