浏览器兼容问题 及 解决方案 (二)
转自:http://www.cnblogs.com/duanhuajian/archive/2012/09/23/2699119.html
1 ie6.0横向margin加倍
产生因素:块属性、float、有横向margin。
解决方法:display:inline;
2 ie6.0下默认有行高
解决方法:overflow:hidden;或font-size:0;或line-height:xx px;
3 在各个浏览器下img有空隙(原因是:回车。)
解决方法:让图片浮动。
4 一个父标签与几个子标签嵌套,父标签不浮动,子标签float,子标签不撑开父的高度。
解决方法:a 在子标签最后清浮动{<div style="height:0;clear:both;"> </div>}
b 父标签添加{overflow:hidden;}
c 给父标签设置高度
5 Ie6下,不识别最大宽、高度和最小宽高度,意即min-width/height和 Max-width/height在ie6中没效果,
解决方法:(1):.abc{border:1px blue solid;width:200px;height:200px;}
html>body .abc{width:auto;height:auto;min-width:200px;min-height:200px;}
(2):.abc{width:200px;height:200px;_width:200px;_height:200px;}(因为ie6有一个特征,当定义一个高度时,如果内容超过高度,元素会自动调整高度。)
6 Ie6里面:如li设宽、高,并且li里面的标签浮动,那么li之间会有间距
解决方法:li不设宽、高或者li内的标签不浮动
7 li之间有间距
解决方法:li 设置vertical-align:middle;
8 3像素问题:ie6下,当浮动元素与流动元素并列显示时,他们之间会存在三像素问题。
解决方法:用hack技术,
例如:所有浏览器通用
height:100px;
ie6专用_height:100px;
ie7专用*+height:100px;
ie6/ie7共用*height:100px;
9 当定义行内元素为包含框时,且包含框包含的绝对定位元素以百分比为单位进行定位时,会出现混乱。
解决方法:在行内元素里加入{zoom:1;}
10 当多个浮动元素中间夹杂着HTML注释语句时,如果浮动元素宽度为100%,则在下一行多显示一个上一行最后一个字符。
解决办法:给浮动元素添加display:inline;。
11 opacity 定义元素的不透明度
filter:alpha(opacity=80);/*ie支持该属性*/
opacity:0.8;/*支持css3的浏览器*/
12 两个块元素,竖向的margin值不增加,会重叠,其间距为最大margin值。
13 优先级:被!important 注明的css属性具有最高优先级(.abc{color:red !important;})。但在ie6中!important具有一个bug:在同一组css属性中,!important不起作用。
14 火狐不识别background-position-y 或background-position-x;
---------------------------2014.01.10补充-------------------------------
15 ie6 不支持 fixed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /*对于非IE6可以这样写*/ # top { position : fixed ; bottom : 0 ; right : 20px ; } /*但是IE6是不支持fixed定位的,需要另外重写*/ # top { position : fixed ; _position : absolute ; top : 0 ; right : 20px ; _bottom : auto ; _top :expression(eval(document.documentElement.scrollTop)); } /*使用hack使IE6实现该效果,但这个东东会闪烁,需要以下代码*/ *html{ background-image : url (about:blank); background-attachment : fixed ; } /*使固定在顶部*/ # top { _position : absolute ; _bottom : auto ; _top :expression(eval(document.documentElement.scrollTop)); } /*固定在底部*/ # top { _position : absolute ; _bottom : auto ; _top :expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop)|| 0 )-(parseInt(this.currentStyle.marginBottom)|| 0 ))); } /*垂直居中*/ # top { position : fixed ; top : 50% ; margin-top : -50px ; _position : absolute ; _top :expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight/ 2 )); } |
16 解决 ie6 最大、最小宽高 hack方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | /* 最小宽度 */ .min_width{ min-width : 300px ; _width :expression(parseInt(this.clientWidth) < 300 ? "300px" : this.clientWidth); } /* 最大宽度 */ .max_width{ max-width : 600px ; _width :expression(parseInt(this.clientWidth) > 600 ? "600px" : this.clientWidth); } /* 最小高度 */ .min_height{ min-height : 200px ; _height :expression(parseInt(this.clientHeight) < 200 ? "200px" : this.clientHeight); } /* 最大高度 */ .max_height{ max-height : 400px ; _height :expression(parseInt(this.clientHeight) > 400 ? "400px" : this.clientHeight); } |
17 z-index不起作用的 bug
1)ie6下 首先讲讲第一种z-index无论设置多高都不起作用情况。这种情况发生的条件有三个:1、父标签position属性为relative;2、问题标签含有浮动(float)属性。
2)所有浏览器:它只认第一个爸爸
层级的高低不仅要看自己,还要看自己的老爸这个后台是否够硬。用术语具体描述为:
父标签position属性为relative或absolute时,子标签的absolute属性是相对于父标签而言的。而在IE6下,层级的表现有时候不是看子标签的z-index多高,而要看它们的父标签的z-index谁高谁低。
18 ie各个版本hack
1 2 3 4 5 6 7 8 9 10 11 | /*类内部hack:*/ .header { _width : 100px ;} /* IE6专用*/ .header {*+ width : 100px ;} /* IE7专用*/ .header {* width : 100px ;} /* IE6、IE7共用*/ .header { width : 100px \ 0 ;} /* IE8、IE9共用*/ .header { width : 100px \ 9 ;} /* IE6、IE7、IE8、IE9共用*/ .header { width : 330px \ 9 \ 0 ;} /* IE9专用*/ /*选择器Hack:*/ *html .header{} /*IE6*/ *+html .header{} /*IE7*/ |
.
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步