首页 > 代码库 > 在前端工作中遇到的一些常见的兼容问题

在前端工作中遇到的一些常见的兼容问题

1.图片下方3像素:在div中插如图片时,图片会将div下方撑大3px;

解决方案:(a)将<div>和<img>写在一行上(IE6、ie7);

     (b)将<img>转为块状元素,给<img>添加声明:display:block;

     (c)给<div>加overflow:hidden;

2.换行产生3像素;

解决方案:(a)不换行,将元素放在一行显示;

     (b)给元素加浮动;

3.鼠标指针bug:cursor属性的hand属性值只有IE浏览器识别,其他浏览器不识别该声明,cursor属性的pointer属性值IE6.0以上版本及其他内核浏览器都识别该声明;

解决方案:如统一某元素鼠标指针形状为手型,应添加声明cursor:pointer

4.li里a加display:block,出现行高不一致;

解决方案:(a)给<a>加display:inline-block;

     (b)给<a>加display:inline;

5.图片超链接边框(ie9以下);

解决方案:给<img>添加border:none;    

6.超链接图片边框一半;

解决方案:给<a>标签添加display:inline-block;  

7.表单按钮元素不对齐;

解决方案:(a)给表单元素加float;

     (b)把图片按钮换成普通按钮;

     (c)用<a>标签伪装按钮;

8.margin值叠加(火狐和谷歌);

解决方案:(a)给子元素加float;

     (b)给父元素添加padding或border;

9.用li写的导航在ie7以下呈阶梯状;

解决方案:给<li>加float;

10.双倍边距:当一个元素里浮动方向与外边距方向一样时,会错误的把margin值显示为双倍;

解决方案:(a)给元素添加声明display:inline;

     (b)给父元素添加margin-left:1/2;

11.部分元素有默认高度(一个字的高度);

解决方案:(a)给元素添加声明font-size:0px;

     (b)给父元素添加声明overflow:hidden;

12.百分比bug:在解析百分比时,会按四舍五入方式计算,导致50%加50%大于100%的情况;

解决方案:给右边的浮动元素添加声明clear:right;

13.ie6浏览器下文字重复;

解决方案:元素之间有HTML注释影响,将其删除即可;

14.ie6浏览器元素高度会被撑大;

解决方案:给元素添加overflow:hidden;

15.除a标签以外使用伪类选择器IE6一律不认识;

解决方案:替换成a标签

16.png24的图片在IE6浏览器上出现背景;

解决方案:做成png8格式的,也可以引用一段脚本;

17.像素问题:使用多个float和注释引起的;

解决方案:给元素添加display:inline -3px;

18.超链接hover点击后失效;

解决方案:使用正确的书写顺序,link、visited、hover、active;

19.z-index问题

解决方案:给父级元素添加position:relative;

20.最小高度:IE6不支持min-height属性,但它却认为height就是最小高度;

解决方案:使用ie6不支持但其余浏览器都支持的属性!important;

21.select在IE6下遮盖;

解决方案:使用iframe嵌套;

22.li边距"无故"增加;

解决方案:设置ul的显示形式为 *display:inline-block 即可,前面 * 是只针对IE6/IE7有效;

23.overflow:在IE6/7中,overflow无法正确的隐藏有相对定位position:relative的子元素;

解决方案:给外包容器加上position:relative;

24.border:none在IE6中不起作用;

解决方案:写成border:0 就好了;

25.100%高度,如果要给元素定义100%高度,必须要明确定义它的父级元素的高度,如果你要定义满屏的高度,就得先给HTML和body定义height:100%;

26.一些定义了:hover的链接,当鼠标移到那些链接上的时候,在IE6下就会触发躲猫猫;

结局方案:(a)在那个未浮动的内容之后加上<span style="clear:both"></span>;

     (b)触发包含了这些链接容器的hasLayout,一个简单的方法就是给其定义height:1%;

27.IE6绝对定位的元素1px间距:当绝对定位的父元素或宽度为奇数时,bottom和right会多出现1px;

解决方案:针对IE6进行hack处理;

在前端工作中遇到的一些常见的兼容问题