您现在的位置: 365建站网 > 365学习 > css中!important的用法和实例

css中!important的用法和实例

文章来源:365jz.com     点击数:67    更新时间:2018-06-15 08:21   参与评论

我们知道,CSS写在不同的地方有不同的优先级, .css文件中的定义 < 元素style中的属性,但是如果使用!important,事情就会变得不一样。

!important为开发者提供了一个增加样式权重的方法。应当注意的是!important是对整条样式的声明,包括这个样式的属性和属性值

<style type="text/css">
a{color:green!important;}
#main a{ color:blue;}
</style>


<div id="main">
<a>!important实例</a>
</div>

对于上面的代码,如果不加important特性,则超链接的颜色为蓝色,但是加上important之后优先级提高了,显示颜色为绿色。

<style>
#Box div{
     color:red;
}
.important_false{
     color:blue;
}
important_true{
     color:blue !important;
}
</style>


<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得以生效,这行字变为了蓝色!

另外有一个值得注意的地方,如果样式这样写:

.testClass{ 
color:blue !important; color:red;
}

这种写法在IE6下是识别不到 !important显示为红色,但也可以通过一下方法让IE6识别到!important

.testClass{ 
color:blue !important; 
} 
.testClass{ 
color:red; 
}


CSS 中一个比较重要的!important属性,从笔者的实践中总结了以下两点:

1、用于解决IE对某些CSS规范有偏差的情况.

    比如在IE中的效果总是和其他的浏览器如firefox,opera等相差2px,导致页面布局有错位, 这是因为IE对盒之间距离的解释的bug造成的,针对这种情况我们就可以利用!important来帮助解决。

 例如下面这个样式

.myclass{
 margin-left
:20px!important;
 margin-left
:40px;

}

如果是在firefox,opera,chrome中,这些浏览器支持!important属性,也就是说他们会默认让margin-left:20px!important; 这条语句生效,下面的不带!important声明的样式将不会覆盖它,换句话说就是他的级别最高,下面的人都不能取代我!

但是,如果换作是IE浏览器会是什么情况呢,因为IE不支持!important ,就是说IE不认识这句话是什么意思,于是傻瓜IE就把这条给略过了,下面那条他可是认识的,于是margin-left:40px;
就生效了。

说到这,需要有一点注意:

并不说IE真的不认识!important,如果你单单想用!important去区别IE和其他浏览器那你就错了,比如:

 

.myclass{
backgroud-color
:black !important;
}

我们异想天开的认为,这条样式IE不认,我们可以让它在其他浏览器上定制显示。到底是不是这样呢? 真的不是! IE也认了。

 

说到这你是不是有点糊涂了,到底IE认不认啊???

答案很简单,只有当同时出现两个同名的样式时,才可以这样用,就像下面这样的.

.myclass{
 margin-left
:20px!important;
 margin-left
:40px;

}


2、如果有定义了一个样式A,比如font-size,你不打算让以后也叫样式A的覆盖掉这个font-size,也可以用 !important . 而如果新样式也用了!important 则还是会强制覆盖掉

.A{
 font-size
:12px !important;
}
.A
{
 font-size
:14px;   //不会生效
}

.A
{
 font-size
:14px !important; //生效
}


 注意,一定要是同名的样式,也就是样式名都叫A的样式才行,如果是父代与子代的情况就不管用了,比如说:

<HTML>

<head>
<style>
.father
{
font-size
:12px !important;
}
.child
{
font-size
:14px;
}
</style>
<body>
<div class="father">
 <div class="child">I am child </div>
</div>
</body>
</html>

 

这种情况下,child的font-size就是14px,不受 father影响。


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (67人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------