CSS浏览器兼容性常见问题总结大全( 三 )


min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确 。但IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使 。这样问题就大了,如果只用宽度和高度,正常的浏览器里 这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度 。比如要设置背景图片,这个宽度是比较重要的 。
解决办法:为了让这一命令在IE上也能用,可以把一个 放到 标签下,然后为div指定一个类:
然后CSS这样设计:

CSS浏览器兼容性常见问题总结大全

文章插图
第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规 。它实际上通过Javascript的判断来实现最小宽度 。
7、UL和FORM标签的padding与margin
ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值 。FORM标签在IE中,将会自动margin一些边距,而在FF中margin则是0;
解决办法:css中首先都使用这样的样式ul,form{margin:0;padding:0;}.
8 ,DIV浮动IE文本产生3象素的bug
左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.
CSS浏览器兼容性常见问题总结大全

文章插图
HTML代码
CSS浏览器兼容性常见问题总结大全

文章插图
针对上面这段代码,下面说一下我的理解:
第一、只要right定义了width属性,在FF下绝对就会两行显示
第二、两个width都定义为百分比的话,就算都为100%在IE下也会一行显示 。所以上面那句所谓“这句是关键”根本没用,不加也在一行,除非你width定义的是数值才用得上 。
所以说上面这段代码其实用处不大,至少在FF下不行 。其实只要只定义left的width就行了,right不定义width就不管在IE还是FF下都能成功,但这样的话父DIV BOX并没有真正的包含LEFT和RIGHT两子DIV,可以用我上面说的第5种办法解决 。最简单的办法就是在RIGHT中加上float:left就OK了
9,截字省略号
CSS浏览器兼容性常见问题总结大全

文章插图
这个是在越出长度后会自行的截掉多出部分的文字,并以省略号结尾 。技术是好技术,很多人都喜欢乱用,但注意Firefox并不支持
CSS技巧
1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了 。缺点是要控制内容不要换行
2. margin加倍的问题设置为float的div在ie下设置的margin会加倍 。这是一个ie6都存在的bug 。解决方案是在这个div里面加上 display:inline; 例如: <#div id=”imfloat”> 相应的css为 #IamFloat{ float:left; margin:5px;/*IE下理解为10px*/ display:inline;/*IE下再理解为5px*/}
3.浮动ie产生的双倍距离#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略} 这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline 元素的特点是,和其他元素在同一行上,不可控制(内嵌元素); #box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的效果 diplay:table;
4 IE与宽度和高度的问题 IE 不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使 。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度 。比如要设置背景图片,这个宽度是比较重要的 。要解决这个问题,可以这样: #box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}

推荐阅读