浏览器兼容文档.doc
文本预览下载声明
浏览器兼容问题
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为 #imfloat{ float:left; margin:5px;/*IE下理解为10px*/ display:inline;/*IE下再理解为5px*/}[2]?
3. 浮动ie产生的双倍距离
#box{ float:left; width:100px; margin:0 0 0 100px; /*这种情况之下IE会产生200px的距离, */ display:inline; /*使浮动忽略*/}
这里细说一下block与inline两个元素:
block元素的特点:总是在新行上开始,高度、宽度、行高、边距都可以控制(块元素);
Inline 元素的特点:和其他元素在同一行上,不可控制(内嵌元素)。
4. IE与宽度和高度的问题
IE 不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。 比如要设置背景图片,这个宽度是比较重要的。
要解决这个问题,可以这样:
#box{ width: 80px; height: 35px;}
htmlbody #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}
5. 页面的最小宽度
min -width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。
但IE不认得这个,而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个div 放到 body 标签下,然后为div指定一个类,然后CSS这样设计:
#container{ min-width: 600px; width:expression(document.body.clientWidth 600? 600px: auto );}
第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。
6.DIV浮动IE文本产生3象素的bug 左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.
例:
style type=text/css
#box{ float:left; width:800px;background-color: #000066;//可以优化为#006;}
#left{ float:left; width:50%;background-color: #006600;//可以优化为#060;}
#right{ width:50%;}
*html #left{ margin-right:-3px; //这句是关键}
/style
div id=box
div id=leftnbsp;/div
div id=rightnbsp;/div
/div
7. IE捉迷藏的问题
当div应用复杂的时候每个栏中又有一些链接,这个时候容易发生捉迷藏的问题。 有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。
解决办法:对#layout使用line-height属性或者给#layout使用固定高和宽。页面结构尽量简单。
8.float的div闭合;清除浮动;自适应高度
① 例1:
style type=text/css
.float_a,.float_b,.float_c { float:left; }
.clear { clear:both; }
/style
div class=float_a内容1/div
div class=float_b内容2/div
div class=clear/div
div class=float_c内容3/div
或者例2:
style type=text/css
.float_a,.float_b { float:left; }
.fl_l { float:left;}
.fl_r { float:right;}
.clear:after
显示全部