css中!important的作用

转自:http://www.cnblogs.com/guoguo-15/archive/2011/08/24/2151859.html

css中!important的作用

   {*rule !important}这个css规则当今在网页制作的时候的普及已经非常流行了,以前我对它的理解就停留在‘浏览器是否识别阶段’ 而没有真正去研究过,可是现在发生了变化。众所周知,!important这个规则对Ie6.0,Ie7.0和Firefox能写hack,现在就来讲解这是什么原理:

  *对于Ie系列浏览器都能够识别, firefox 浏览器则不能识别;

  !important只有Ie7.0和firefox可以识别,但是Ie6.0不能成功应用.

  (1)区别ie与firefox的hack为:border:2px solid #f00;*border:1px solid #f00;

     (2)区别Ie6.0 与Ie7.0、firefox的hack为:border:1px solid #f00!important;border:2px solid #f00;

  在(1)中,之所以把*放在后面是因为ff不识别*而导致只对它设置了一次border;而ie 系列进行了两次border设置后,后一个属性覆盖了前一个属性,故为一像素的边框。

  在(2)中,之所以把!important放在第一个border 设置,是因为它把这次border的优先级提高了,即使后面在一次甚至在N次设置border 也无效,但是Ie6.0对这个规则不接受,而导致它应用了第二次的border 设置,也就是第二次覆盖了第一次的这一原理, 并不是它不识别!important;所以它的border为2 像素的红框.

这是一个简单的应用:

View Code
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
div{
width:800px;
height:250px;
background-color:yellow!important;/*提升指定样式规则的应用优先权*/
background-color:red;
border:3px solid #000!important;/*firefox*/
*border:5px solid #f00!important;/*Ie7.0*/
border:1px solid #000;/*Ie6.0*/
}
</style>
</head>

</html>
复制代码

例一:

CSS

1 #Box {
2      color:red !important;
3      color:blue;
4 }
复制代码

HTML

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

  这个例子应该是大家经常见到的important的用法了,在IE IE6环境下,这行字是蓝色,在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帮助我们解决了很多兼容性问题,这显然不是件坏事!

        在IE中对盒模型(box-model)的解释是有BUG的,IE6.0之前的版本会把某元素的边框值和填充值包含在宽度之内(而不是加在宽度值上)。例如,你可能会使用以下css来指定某个容器的尺寸:
  

1 #box
2   {
3    width:100px;
4    border:5px;
5    padding:20px;
6   }
复制代码

  然后在html中应用:盒的总宽度在几乎所有浏览器中为150像素(100像素宽度+两条5像素的边框+两个20像素的填充),唯独在IE6之前版本的浏览器中仍然为100像素(边框值和填充值包含在宽度值中),使用盒模型的hack可以解决这一问题,

  

View Code
#box 
  { 
   width:150px;        //这个是错误的width,所有浏览器都读到了
   voice-family: \}\;      //IE5.X/win忽略了\}\后的内容
   voice-family:inherit;
   width:100px;       //包括IE6/win在内的部分浏览器读到这句,新的数值(300px)覆盖掉了旧的
  } 
       还有更简单的办法如下:
  CSS:
  #box { width:150px; }
  #box div { border:5px; padding:20px; }
  HTML:
  ...
复制代码

  这样一来在任何浏览器中盒的总宽度都将是150像素。

  但是即使是到了最新的IE6.0依然存在浮动模型(Float-model)的问题,值得庆幸(还是悲哀?)的是我们可以用IE中一直都不支持的!important来解决这个问题。
  !important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权(参见:W3.org的解释)。语法格式{ sRule!important },即写在定义的最后面,

     例如:

box{color:red !important;} 

  假如我们定义一个这样的样式:

     

#box{background-color: #ffffff !important; background-color: #000000;}

  那么在支持该语法的浏览器,如Firefox、Opera中,能够理解!important的优先级,背景显示#ffffff颜色,而在IE中则显示#000000.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 CSS ,`!important` 是一个关键字,可以应用于 CSS 属性值,用于强制应用指定的属性值,覆盖其他所有可能的样式。当在一个属性值后添加 `!important` 时,这个属性值就会优先于其他所有的样式规则,即使它们来自于外部样式表或内部样式表,也会覆盖它们。 以下是一个例子: ``` p { color: red !important; } p { color: blue; } ``` 在这个例子,所有的段落都将会应用红色的文本颜色,因为它带有 `!important` 关键字,即使有一个后面的规则将文本颜色设置为蓝色。 尽管 `!important` 可以使得样式表更具有可读性和可维护性,但过度使用它可能会导致样式混乱和不可预测的行为,因为它会覆盖其他规则,使得调试变得更加困难。因此,应该尽可能避免过度使用 `!important`,并且只在需要时才使用它。 ### 回答2: !importantCSS 的一个重要属性,它可以用来覆盖其他样式规则,并且具有最高的优先级。 在 CSS ,样式的应用顺序是从上往下的,后面的样式会覆盖前面的样式。但是有些时候,我们希望某些样式规则不被其他样式覆盖,就可以使用!important。使用!important 后,样式规则会被强制应用,无论其他样式的优先级如何。 !important 应该谨慎使用,它可能会对我们的样式表产生意想不到的副作用。过度使用!important 可能会导致我们的样式变得混乱,难以维护。因此,我们应该尽量避免使用!important,只在必要的情况下使用。 通常情况下,我们应该通过更好的选择器、更具体的样式规则来解决样式冲突问题,而不是滥用!important。如果必须使用!important,最好添加详细的注释,以便日后维护时能够理解其作用。 总结起来,!importantCSS 一种重要的属性,可以覆盖其他样式规则,并且具有最高的优先级。然而,我们应该慎重使用!important,尽量通过更好的选择器和更具体的样式规则来解决样式冲突问题。 ### 回答3: 在CSS,!important是一种重要性规则,它的作用是强制覆盖其他样式规则,并使其具有最高的优先级。 !important通常被用于解决样式冲突问题。当有多个样式规则应用于同一个元素时,优先级较高的规则将会覆盖优先级较低的规则。但是,在某些情况下,我们希望确保某个样式规则始终生效,无论其他规则的优先级如何,这时就可以使用!important。 !important使用的方法很简单,只需在样式规则的属性值后面添加!important关键字即可。例如: ``` p { color: red !important; } ``` 上述代码,给所有的<p>元素设置了红色文字颜色,并添加了!important。这样,无论其他样式规则如何设置,这个<p>元素的文字颜色都将始终为红色。 需要注意的是,尽量避免滥用!important。因为!important会改变样式规则的优先级,可能导致难以维护的代码。一般来说,只在必要的情况下使用!important来解决样式冲突问题。如果能通过调整选择器的特异性或者优化样式规则来解决问题,那就尽量不要使用!important。 总结一下,CSS!important是一种强制覆盖其他样式规则并具有最高优先级的重要性规则。适当地使用!important能够解决一些样式冲突问题,但要谨慎使用以避免代码维护困难。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值