CSS论坛's Archiver

飞翔的蜗牛 发表于 2011-12-20 11:01

CSS中!important的作用

[color=#000][font=Tahoma][size=12pt] {*rule !important}[font=宋体]这个[/font][font=Tahoma]css[/font][font=宋体]规则当今在网页制作的时候的普及已经非常流行了,以前我对它的理解就停留在[/font][font=Times New Roman]‘[/font][font=宋体]浏览器是否识别阶段[/font][font=Times New Roman]’ [/font][font=宋体]而没有真正去研究过,可是现在发生了变化。众所周知,[/font][font=Tahoma]!important[/font][font=宋体]这个规则对[/font][font=Tahoma]Ie6.0,Ie7.0[/font][font=宋体]和[/font][font=Tahoma]Firefox[/font][font=宋体]能写[/font][font=Tahoma]hack[/font][font=宋体],现在就来讲解这是什么原理:[/font][/size][/font][/color]
[color=#000][font=Tahoma][size=12pt]        *[font=宋体]对于[/font][font=Tahoma]Ie[/font][font=宋体]系列浏览器都能够识别, [/font][font=Tahoma]firefox [/font][font=宋体]浏览器则不能识别[/font][font=Tahoma];[/font][/size][/font][/color]
[color=#000][font=Tahoma][size=12pt]         !important[font=宋体]只有[/font][font=Tahoma]Ie7.0[/font][font=宋体]和[/font][font=Tahoma]firefox[/font][font=宋体]可以识别,但是[/font][font=Tahoma]Ie6.0[/font][font=宋体]不能成功应用[/font][font=Tahoma].[/font][/size][/font][/color]

[color=#000][font=Tahoma][size=12pt]     (1)[font=宋体]区别[/font][font=Tahoma]ie[/font][font=宋体]与[/font][font=Tahoma]firefox[/font][font=宋体]的[/font][font=Tahoma]hack[/font][font=宋体]为[/font][font=Tahoma]:border:2px solid #f00;*border:1px solid #f00;[/font][/size][/font][/color]
[color=#000][font=Tahoma][size=12pt]     (2)[font=宋体]区别[/font][font=Tahoma]Ie6.0 [/font][font=宋体]与[/font][font=Tahoma]Ie7.0[/font][font=宋体]、[/font][font=Tahoma]firefox[/font][font=宋体]的[/font][font=Tahoma]hack[/font][font=宋体]为[/font][font=Tahoma]:border:1px solid #f00!important;border:2px solid #f00;[/font][/size][/font][/color]

[color=#000][font=Tahoma][size=12pt]     在[font=Tahoma](1)[/font][font=宋体]中,之所以把[/font][font=Tahoma]*[/font][font=宋体]放在后面是因为[/font][font=Tahoma]ff[/font][font=宋体]不识别[/font][font=Tahoma]*[/font][font=宋体]而导致只对它设置了一次[/font][font=Tahoma]border;[/font][font=宋体]而[/font][font=Tahoma]ie [/font][font=宋体]系列进行了两次[/font][/size][/font][/color]
[color=#000][font=Tahoma][size=12pt]     border[font=宋体]设置后,后一个属性覆盖了前一个属性,故为一像素的边框。[/font][/size][/font][/color]

[color=#000][font=Tahoma][size=12pt]     在[font=Tahoma](2)[/font][font=宋体]中,之所以把[/font][font=Tahoma]!important[/font][font=宋体]放在第一个[/font][font=Tahoma]border [/font][font=宋体]设置,是因为它把这次[/font][font=Tahoma]border[/font][font=宋体]的优先级提高了,即使[/font][/size][/font][/color]
[color=#000][font=Tahoma][size=12pt]     后面在一次甚至在[font=Tahoma]N[/font][font=宋体]次设置[/font][font=Tahoma]border [/font][font=宋体]也无效,但是[/font][font=Tahoma]Ie6.0[/font][font=宋体]对这个规则不接受,而导致它应用了第二次的[/font][/size][/font][/color]
[color=#000][font=Tahoma][size=12pt]     border [font=宋体]设置,也就是第二次覆盖了第一次的这一原理, 并不是它不识别[/font][font=Tahoma]!important;[/font][font=宋体]所以它的[/font][font=Tahoma]border [/font][/size][/font][/color]
[color=#000][font=Tahoma][size=12pt]     为[font=Tahoma]2 [/font][font=宋体]像素的红框[/font][font=Tahoma].[/font][/size][/font][/color]这是一个简单的应用:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>[font=宋体]无标题文档[/font][font=Times New Roman]</title>[/font]
<style type="text/css">
div{
width:800px;
height:250px;
background-color:yellow!important;/*[font=宋体]提升指定样式规则的应用优先权[/font][font=Times New Roman]*/[/font]
background-color:red;
border:3px solid #000!important;/*firefox*/
*border:5px solid #f00!important;/*Ie7.0*/
border:1px solid #000;/*Ie6.0*/
}
</style>
</head>
例一:

[color=#000][font=Tahoma][size=13.5pt]CSS[/size][/font][/color]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.