首页 > 代码库 > 在前端工作中遇到的一些常见的兼容问题
在前端工作中遇到的一些常见的兼容问题
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处理;
在前端工作中遇到的一些常见的兼容问题