个人整理的兼容性问题和解决办法

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*/
复制代码

------------------------------------------------------------------------

输入框 一个很基础的控件 结果出现了兼容性问题
在chrome ie android上页面正常 结果在Safari和IOS系统里面输入框无法输入
点击后有获取焦点的边框高亮效果但是不能输入 查询资料解决 查询解决问题如下
这个是一个提交的页面但是总是无法输入进去文字 在uc中是可以的 但是在微信中
或者ios自带浏览器是无法输入的 绞尽脑汁 找了半天 才发现自己多加了一段代码
(这个代码是模版中自带的 我靠)
/*-webkit-user-select: none;
把这行代码注视掉就可以了 至于这行代码作用是什么 解释如下
或许你常常不希望用户在你的网站上选择文本,无论是否是出于版权的原因.
通常大家会有js来实现,另一个方案就是,将-webkit-user-select 和-moz-user-select
的值设为none.
请谨慎使用这个属性:因为大部分用户是来查看信息的,他们可以复制并存储下来以备将来之用
,所以这种方法既无用也无效.如果你禁用了复制粘贴功能,用户还是可以通过查看源文件来获取
到他们想要的内容.搞不懂这个属性为什么会被webkit和gecko支持.

--------------
大部分情况下,使用这个属性的目的是为了界面的美化,
因为手机端很容易因为用户长按屏幕出现文本选择框,
很丑,影响用户体验,所以在没有 复制黏贴这种需求的
页面里,一般会使用这个属性禁止用户选择。不过我倒是
没发现这个属性会导致输入框不能输入
--------------

想不明白 不过-webkit-user-select: none这个确实会导致
输入框不能输入 在Safari里面 只要有这个就不行 这个前缀不是
chrome的内核吗 其他的同属性都可以 但是只要有-webkit前缀的这个
属性就出问题了 不明白原因
------------------

时间: 2024-12-26 16:57:31

个人整理的兼容性问题和解决办法的相关文章

IE浏览器常见CSS兼容性问题及解决办法

对于前端开发者来讲,世界上存在着一个神奇的东西——IE浏览器,尤其是低版本的IE浏览器,惨不忍睹的兼容性使其臭名昭著.前端工作者很多的时间都花在了和它打交道上,所以大家纷纷吐槽IE浏览器如何的渣,简直是万恶之源.但是IE浏览器市场份额有非常大,喷完还要接着搞兼容.对于IE浏览器来讲,我们应该有一个客观的评价.首先其兼容性差,原因可想而知,更新速度太慢,要几年才出一个版本,而市场上的FireFox.chrome等浏览器几个月就有一个版本上市.中间那么长的时间足以将其bug充分的暴露出来,其他浏览器

win8下安装VC6出现兼容性问题的解决办法

重装系统之后(win8的系统),发现VC6安装出现兼容性问题,花了一些时间解决,有出现的问题都差不多在下面链接的总结中,写的很详细: http://www.docin.com/p-1126120829.html 这里面安装补丁的过程还会出现以下问题: "模块FileTool.dll已加载,但对DLLRegisterServer调用失败" 解决办法就是: 在cmd下手动注册该dll文件:regsvr32 "C:\Program Files\Microsoft Visual St

关于IE和Firefox兼容性问题及解决办法

1.//window.eventIE:有window.event对象FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=doMouseMove(event)解决方法:var event = event || window.event;一个示例: <script> function test(event) { var event = event || window.event; //do Something } </script>

移动端常见兼容性问题及解决办法

当使用transform:translate3d(-50%,-50%,0)居中弹框(div)时,在pc端,内部的文字会模糊.解决办法:给body定义样式 body{ font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,SimSun,sans-serif; } 用position:absolute/fixed;把一个按钮固定在页面的底部,在android系统中,当调用输入法时,该按钮会

IE6的兼容性问题及解决办法

1. 双边距问题 出现原因:当块级元素有浮动样式的时候,给元素添加margin-left和margin-right样式,在ie6下就会出现双倍边距: 解决办法:给当前元素添加样式,使当前元素不为块,如:display:inline;display:list-item 这样在元素浮动的时候就不会在ie6下面产生双倍边距的问题了. 2. 超链接hover点击后失效 出现原因:

常见浏览器兼容性问题及解决办法总结(持续更新中...)

1. 不同浏览器的标签默认的外补丁( margin )和内补丁(padding)不同: 解决办法:在CSS文件开头,加*{margin: 0; padding: 0;},把所有标签的margin和padding设置为0即可. 2. 在IE6中,块元素设置float并且有水平方向的margin时,margin显示出来会比设置的值大,会导致最后一块元素被顶到下面去: 解决办法:可以将块级元素display设置为inline. 3. 在IE6,IE7等浏览器,标签高度小于10px时,实际的高度会超出设

Web 前端开发中一些兼容性问题及其解决办法 (持续更)

浏览器兼容是前端开发人员必须掌握的一个技能,之前听过一句话:我们应该追求最新的浏览器使用最新的技术,但是一定要有渐进增强,向后兼容的思想.本篇文章就笔者自己平时遇到的一些兼容问题做个记录和整理. 1.IE8下元素有宽高但是元素没有内容时,对元素添加事件如click等无效 (埋链接和在图片上埋按钮时会经常遇到这个问题)  在IE8中如果元素没有内容,即便元素有宽和高,浏览器还是不能识别,这时一个很好的办法就是对该元素设置背景色,然后再让元素的透明度为0,这样元素背景色并不会显示,且元素内有内容,能

启动Myeclipse报错“Failed to create the Java Virtual Machine”的解决办法

我安装的是Myeclipse 10.7.1.装上好久没用,今天启动突然报错:Failed to create the Java Virtual Machine. 检查Myeclipse安装好使用时好的啊,近期也没用,可能是近期升级了本地单独安装的jre版本导致的吧(Myeclipse使用自己的jre的). 整理了如下2个解决办法,可以选择一个使用,我选择的是第2个.经测试都ok. 方法一: 找到Myeclpise路径下的myeclipse.ini文件: 编辑将Xmx(JVM Heap最大允许的尺

IE6-IE11兼容性问题列表及解决办法总结

相比IE6-IE9那版,主要添加IE10和IE11的新变化. 以下是目录及下载链接: 目录 概述 2 第一章:HTML 3 第一节:IE7-IE8更新 3 1. 如果缺少结束标记的 P 元素后跟 TABLE.FORM.NOFRAMES 或 NOSCRIPT 元素,会自动添加结束标记. 3 2. 支持格式正确的有效标记,不再支持格式错误的 HTML. 4 3. Button标签的默认type类型从button改为submit. 5 4. 不再支持 COL 及 COLGROUP 元素的部分属性及为其