常见的兼容问题

常见浏览器的兼容问题

  初学html和css时,每天切图,总会遇到很多浏览器兼容性问题。最近一直关注移动平台开发,就html和css来说,不用考虑那么多浏览器兼容性问题。到现在,以至于很多浏览器兼容性几乎忘光了。今天把以前总结的知识拿来分享一下,顺便自己也复习一下。当然,其中肯定有很多不足,望指正啊。

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;">&nbsp;</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

/*对于非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方法

/* 最小宽度 */
.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

/*类内部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*/ 

时间: 2024-11-03 21:38:43

常见的兼容问题的相关文章

HTML+CSS+JS实现TABLE固定列(常见浏览器兼容)的最佳实践

BS架构的企业级应用中,当一个表格列数较多时,用户一个常见的需求就是把前面几个重要的列固定住,这样拖动滚动条时固定的列会方便用户查看数据,用户体验很好.一些重量级的JS组件库也都有这个功能,那么有没有更简单的方法实现这个功能呢? 这个需求常见的解决方案是使用表格拼接的方法,这个方案如果要制作静态的网页,或者功能简单的动态页面,逻辑比较简单,技术上也不复杂,很容易实现,但是如果要做成组件,动态功能较多的话,就需要写大量的冗余代码,难以维护,甚至于一个简单的功能,都需要些很多的代码,比如事件处理等,

WEB前端开发人员须知的常见浏览器兼容问题及解决技巧

所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果.所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题.在学习浏览器兼容性之前,我想把前端开发人员划分为两类: 第一类是精确按照设计图开发的前端开发人员,可以说是精确到1px的,他们很容易就会发现设计图的不足,并且在很少的情况下会碰到浏览器的兼容性问题,而这些问题往往都是浏览器的

处理常见浏览器兼容问题

浏览器兼容问题一:不同浏览器的标签默认的margin和padding不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大 碰到频率:100% 解决方案: CSS里加一行 *{margin:0;padding:0;} 备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设置各个标签的内外补丁是0. 浏览器兼容问题二: 块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大 问

Javascript常见浏览器兼容问题

常见浏览器原生javascript兼容性问题主要分为以下几类: 一.Dom 1.获取HTML元素,兼容所有浏览器方法:document.getElementById("id")以Id来获取元素; document.getElementsByTagName(“tag”)[0]以标签名来获取元素.另外IE不支持document.getElementsByClassName("class"); 2.获取Form表单元素 只兼容IE:document.formname.it

常见浏览器兼容问题及解决技巧

首先我们应该了解一下为什么会有兼容问题? 由于市场上浏览器种类众多,而不同浏览器其内核亦不尽相同,所以各个浏览器对网页的解析就有一定出入,这也是导致浏览器兼容问题出现的主要原因,我们的网页需要在主流浏览器上正常运行,就需要做好浏览器兼容. 使用Trident内核的浏览器:IE.Maxthon.TT: 使用Gecko内核的浏览器:Netcape6及以上版本.FireFox: 使用Presto内核的浏览器:Opera7及以上版本: 使用Webkit内核的浏览器:Safari.Chrome. 而我现在

常见浏览器兼容问题、盒模型2种模式以及css hack知识讲解

什么是浏览器兼容问题?所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果.所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题. 总结一下我编写代码的时候遇到的浏览器兼容问题,跟大家学习. 一.解决无法在IE6下面设置1px高的容器(div)的问题. 大家看看这一段代码: <div style="height:1px;wi

常见的兼容问题及其解决方法。

1.PNG在IE6下不兼容. <!--[if IE 6]> //让只有IE6识别 <script src="js/DD_belatedPNG_0.0.8a.js"></script> //让IE6兼容PNG的JS <script> DD_belatedPNG.fix('*'); // *为通配符 </script> <![endif]--> 1 /** 2 * DD_belatedPNG: Adds IE6 sup

关于常见IE兼容插件的研究

1.html5shiv.js html5.js 适用浏览器:IE 6 7 8  目的:让低版本IE浏览器(678)支持html5新增的标签 使用方法: <!--[if lt IE 9]> <script src="dist/html5shiv.min.js"></script> <![endif]--> 尽量使用压缩过的js,在body标签之前加载 原理: 使用createElement方法,这包含document.createEleme

原生js中6种常见的兼容问题以及解决方案

1.键盘检测兼容写方法var key = e.keyCode || e.which || e.charCode;2.阻止冒泡事件冒泡的兼容e.stopPropagation ? e.stopPropagation():e.cancelBubble = true;3.鼠标箭头事件对象的兼容 obj.onclick = function(evt){           var e = evt || event;                alert(e);            }4.阻止浏览器