这是一个简单的应用:
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
div{
800px;
height:250px;
background-color:yellow!important;
background-color:red;
border:3px solid #000!important;
*border:5px solid #f00!important;
border:1px solid #000;
}
</style>
</head>
例一:
CSS
}
HTML
例二:
CSS
}
2 .important_false{
}
3.important_true{
}
HTML
</div>
通过上边两个例子,得以总结:
#box
{
100px;
border:5px;
padding:20px;
}
然后在html中应用:
#box
{
150px; //这个是错误的width,所有浏览器都读到了
voice-family: \}\; //IE5.X/win忽略了\}\后的内容
voice-family:inherit;
100px; //包括IE6/win在内的部分浏览器读到这句,新的数值(300px)覆盖掉了旧的
}
CSS:
#box { 150px; }
#box div { border:5px; padding:20px; }
HTML:
...
但是即使是到了最新的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.
!important这个属性,这个属性其实也是css规范中的,结果IE6愣是不支持,也正因为它不支持,才让很多的CSSer们找到了解决的方法。一般来讲,在css中,如果在同一个css块中写下两个同样的属性,那么其实是按照最下面的来执行的,比如说:
.home{
margin-left:20px;
margin-left:40px;
}
那么在执行的时候其实是按照40px来执行的,!important的出现就是为了让用户自己设置被执行语句的优先级。如果把上面的语句改为:
.home{
margin-left:20px!important;
margin-left:40px;
}
那么在火狐、google浏览器以及IE7以上版本下将会按照20px来执行,而在IE6下却仍然按照40px来执行,因为IE6并不支持!important规范,我们就可以按照这个规则来满足IE6的设计需要,什么时候发现IE6和其他浏览器显示效果不同,那么就设置两个,在上面的一个加入!important标记,而下面的一句则不需要添加,这样IE6就按照下面的来执行了。资深的CSSer说:如今的CSS处处!important。这可都是天杀的IE6惹的祸,大家说IE6就是一坨代谢产物一点也不为过。
CSS定义对于不同浏览器的兼容性问题一直比较困惑。不管是用div+CSS还是table来进行页面设计,我对WEB重建的理解是:速度与兼容性。即要尽可能提高浏览者访问页面时浏览的速度、要使页面能尽可能兼容不同来访浏览器的浏览效果。所以近期的设计都是打开几个不同的浏览器进行测试,如IE、GoSuRF Browser、Opera和Firefox浏览器。测试结果表明,IE和GoSuRF Browser对CSS的支持最好,Opera其次,Firefox要求最高。
先看下面的效果:
以下图片是在IE浏览器、GoSuRF Browser浏览器和Opera浏览器中看到的效果:
在Mozilla Firefox浏览器中看到的效果:
其中在IE和GoSuRF Browser浏览器浏览时的效果基本没差别,居中正常;Opera浏览器中对于这里居中效果也正常(但对于页面其他地方就有些问题,这在后面再研究);在Mozilla Firefox浏览器中看到的效果就不同了,居中是对的,但是二边都没对齐,抓图仔细查看了下,二边多出了5个像素的宽度,并且里面的缩进量都有问题。
先看看CSS中对于中间区域的定义:
#mainall { 760px; height: 300px; padding: 5px; margin: 0 auto; background: #fff; } |
可能是padding: 5px;这个缩进量Firefox不支持,先测试将“padding: 5px;”改成“padding: 0px;”,保存后浏览,二边多出了5个像素的宽度就不见了。就是它了。在CSS中再加一句:“padding: 0px !important; ”:
#mainall { 760px; height: 300px; padding: 0px !important; padding: 5px; margin: 0 auto; background: #fff; } |
首先二边对齐的问题解决了。但是右侧的div内容却被挤到下面去了。很可能是宽度不够的缘故。再看下左右二个div的定义:
/*===中部左侧定义开始===*/ #mainbox { padding:10px; float: left; 495px; background: #fff; } /*===中部右侧定义开始===*/ #rightbox { float: right; padding: 5px; 250px; height: 100%; background: #F6F7F9; } |
应该是这个狐狸(Firefox)将padding这个补丁边距的缩进量,不但是只具有缩进效果,并且还让浏览器解析成:整个box的宽度为width+padding了!晕哦,找到这个原因,解决起来方便些了:将整个box的宽度在Firefox中应该计算为(width-padding)。让!important来做这个工作吧:
/*===中部左侧定义开始===*/ #mainbox { padding: 0px !important; /****兼容Firefox浏览器*****/ padding:10px; float: left; 495px; background: #fff; } /*===中部右侧定义开始===*/ #rightbox { float: right; padding: 5px; 250px; height: 100%; background: #F6F7F9; } |
再次浏览,终于左侧上去了,哈哈,应该就是这个问题啦。但是问题又来了,右侧怎么灰色的标题栏到边界外面去了?
再看CSS定义:
#rightbox dt { padding: 3px !important; /****兼容Firefox浏览器*****/ padding: 3px; margin: 0px; border: 0px; 100%; font-weight: normal; font-family:宋体; font-size: 12px; color: #fff; background: #A6A9AE; text-align: left; } #rightbox dd { padding: 5px !important; /****兼容Firefox浏览器*****/ padding: 10px; margin: 0px; border: 0px; text-align: left; 100%; font-weight: normal; font-family:宋体; font-size: 12px; line-height: 24px; } |
这里设置了标题#rightbox dt的宽度为100%,测试一下,去掉这个定义就显示正常了,用相同的手法处理下,加上个定义“ !important;”,让Firefox先认识这个定义而丢弃 100%的定义即可:
#rightbox dt { padding: 3px !important; /****兼容Firefox浏览器*****/ padding: 3px; margin: 0px; border: 0px; !important; /****兼容Firefox浏览器*****/ 100%; font-weight: normal; font-family:宋体; font-size: 12px; color: #fff; background: #A6A9AE; text-align: left; } #rightbox dd { padding: 5px !important; /****兼容Firefox浏览器*****/ padding: 10px; margin: 0px; border: 0px; text-align: left; !important; /****兼容Firefox浏览器*****/ 100%; font-weight: normal; font-family:宋体; font-size: 12px; line-height: 24px; } |
浏览下效果,正常了!
调整前的效果 用 !important后的效果