如何处理css与IE兼容性问题

作者&投稿:闾烟 (若有异议请与网页底部的电邮联系)
如何快速解决IE的CSS兼容问题~

所谓的不兼容很大意义上是指初始值的不同。比如:默认div层中。不同浏览器是有默认的padding值和其他属性值的我做个示范 如下:body{font-size:12px; font-family:宋体, Arial, Helvetica, sans-serif;padding:0px; margin:0px;}
div,form,img,ul,li,p,span{ margin: 0px; padding: 0px; border: 0px;}
做CSS布局出错时 只要把层的边框显示出来就很容易看出问题的。还有很重要的一点,层有浮动必须清空。我刚开始做这个的时候是看网易的主页的源代码编写的,然后翻阅API帮助文档查看不懂的属性。很快就可以解决问题的。

所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况,在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果。随着浏览器版本的增多,解决IE浏览器兼容性显得尤为重要.
一、!important (功能有限)
随着IE7对!important的支持, !important 方法现在只针对IE6的兼容.(注意写法.记得该声明位置需要提前.)
例如:
#example {
width: 100px !important; /* IE7+FF */
width: 200px; /* IE6 */
}
二、CSS HACK的方法(新手可以看看,高手就当路过吧)
首先需要知道的是:
所有浏览器 通用 height:
100px;
IE6 专用 _height: 100px;
IE7 专用 *+height: 100px;
IE6、IE7 共用 *height:
100px;
IE7、FF 共用 height: 100px
!important;
例如:
#example { height:100px; } /*FF */
* html #example {height:200px; } /* IE6 */
*+html #example {height:300px; } /* IE7 */
下面的这种方法比较简单
举几个例子:
1、IE6 - IE7+FF
#example {
height:100px; /* FF+IE7 */
_height:200px; /* IE6 */
}
其实这个用上面说的第一种方法也可以
#example {
height:100px !important; /* FF+IE7 */
height:200px; /* IE6 */
}
2、IE6+IE7 - FF
#example {
height:100px; /* FF */
*height:200px; /* IE6+IE7 */
}
3、IE6+FF - IE7
#example {
height:100px; /* IE6+FF */
*+height:200px; /* IE7 */
}
4、IE6 IE7 FF 各不相同
#example {
height:100px; /* FF */
_height:200px; /* IE6 */
*+height:300px; /* IE7 */
}
或:
#example {
height:100px; /* FF */
*height:300px; /* IE7 */
_height:200px; /* IE6 */
}
需要注意的是,代码的顺序一定不能颠倒了,要不又前功尽弃了。因为浏览器在解释程序的时候,如果重名的话,会用后面的覆盖前面的,就象给变量赋值一个道理,所以我们把通用的放前面,越专用的越放后面
解释一下4的代码:
读代码的时候,第一行height:100px; 大家都通用,IE6 IE7 FF 都显示100px
到了第二行*height:300px; FF不认识这个属性,IE6IE7都认,所以FF还显示100px,而IE6 IE7把第一行得到的height属性给覆盖了,都显示300px
到了第三行_height:200px;只有IE6认识,所以IE6就又覆盖了在第二行得到的height,最终显示200px
这样,三个浏览器都有自己的height属性了,各玩各的去吧
这样说要是你还不明白,要么你去撞墙,要么我去!不过还是你去比较好。
哦,差点忘了说了:
*+html 对IE7的兼容 必须保证HTML顶部有如下声明:
〈!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"〉
三、使用IE专用的条件注释
〈!--其他浏览器 --〉
〈linkrel="stylesheet" type="text/css" href="css.css" /〉
〈!--[if IE 7]〉
〈!-- 适合于IE7 --〉
〈linkrel="stylesheet" type="text/css" href="ie7.css" /〉
〈![endif]--〉
〈!--[if lte IE 6]〉
〈!-- 适合于IE6及以下 --〉
〈linkrel="stylesheet" type="text/css" href="ie.css" /〉
〈![endif]--〉
貌似要编三套css,我还没用过,先粘过来再说
IE的if条件Hack
1. 〈!--[if !IE]〉〈!--〉 除IE外都可识别 〈!--〈![endif]--〉
2. 〈!--[if IE]〉 所有的IE可识别
〈![endif]--〉
3. 〈!--[if IE 5.0]〉 只有IE5.0可以识别
〈![endif]--〉
4. 〈!--[if IE 5]〉 仅IE5.0与IE5.5可以识别 〈![endif]--〉
5. 〈!--[if gt IE 5.0]〉 IE5.0以及IE5.0以上版本都可以识别 〈![endif]--〉
6. 〈!--[if IE 6]〉 仅IE6可识别
〈![endif]--〉
7. 〈!--[if lt IE 6]〉 IE6以及IE6以下版本可识别 〈![endif]--〉
8. 〈!--[if gte IE 6]〉 IE6以及IE6以上版本可识别 〈![endif]--〉
9. 〈!--[if IE 7]〉 仅IE7可识别
〈![endif]--〉
10. 〈!--[if lt IE 7]〉 IE7以及IE7以下版本可识别 〈![endif]--〉
11. 〈!--[if gte IE 7]〉 IE7以及IE7以上版本可识别 〈![endif]--〉注:gt = Great Then 大于
〉 = 〉 大于号
lt = Less Then 小于
〈 = 〈 小于号
gte = Great Then or Equal 大于或等于
lte = Less Then or Equal 小于或等于
四、css filter的办法(据作者称是从国外某经典网站翻译过来的说)
新建一个css样式如下:
#item {
width: 200px;
height: 200px;
background: red;
}
新建一个div,并使用前面定义的css的样式:
〈div 〉some text here〈/div〉
在body表现这里加入lang属性,中文为zh:
〈body〉
现在对div元素再定义一个样式:
*:lang(en) #item{
background:green !important;
}
这样做是为了用!important覆盖原来的css样式,由于:lang选择器ie7.0并不支持,所以对这句话不会有任何作用,于是也达到了ie6.0下同样的效果,但是很不幸地的是,safari同样不支持此属性,所以需要加入以下css样式:
#item:empty {
background: green !important
}
:empty选择器为css3的规范,尽管safari并不支持此规范,但是还是会选择此元素,不管是否此元素存在,现在绿色会现在在除ie各版本以外的浏览器上。
五、FLOAT闭合(clearing float)
  网页在某些浏览器上显示错位很多时候都是因为使用了float浮动而没有真正闭合,这也是div无法自适应高度的一个原因。如果父div没有设float而其子div却设了float的话,父div无法包住整个子DIV,这种情况一般出现在一个父DIV下包含多个子DIV。解决办法:
1、给父DIV也设上float(不要骂我,我知道是废话)
2、在所有子DIV后新加一个空DIV(不推荐,有些浏览器可以看见空DIV产生的空隙)
比如:
.parent{width:100px;}
.son1{float:left;width:20px;}
.son2{float:left;width:80px;}
.clear{clear:both;margin:0;parding0;height:0px;font-size:0px;}
〈divclass="parent"〉
〈div class="son1"〉〈/div〉
〈div class="son2"〉〈/div〉
〈div class="clear"〉〈/div〉
〈/div〉
3、万能 float 闭合
将以下代码加入Global CSS 中,给需要闭合的div加上 class=”clearfix” 即可,屡试不爽.
代码:
〈style〉
/* Clear Fix */
.clearfix:after {
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
.clearfix {
display:inline-block;
}
/* Hide from IE Mac \*/
.clearfix {display:block;}
/* End hide from IE Mac */
/* end of clearfix */
〈/style〉
:after(伪对象),设置在对象后发生的内容,通常和content配合使用,IE不支持此伪对象,非Ie 浏览器支持,所以并不影响到IE/WIN浏览器。这种的最麻烦。
4、overflow:auto(刚看到的,极力推荐)
只要在父DIV的CSS中加上overflow:auto就搞定。
举例:
.parent{width:100px;overflow:auto}
.son1{float:left;width:20px;}
.son2{float:left;width:80px;}
〈divclass="parent"〉
〈div class="son1"〉〈/div〉
〈div class="son2"〉〈/div〉
〈/div〉
作者原话:原理是,外围元素之所以不能很好的延伸,问题出在了overflow上,因为overflow不可见(见W3C的解释)。现在只要将给外围元素添 加一个“overflow:auto”,就可以解决问题,结果是除了IE,真的可以解决。下来就要解决IE的问题了,再加上“_height:1%”,这个问题就完全解决了。
我试了一下,其实不加"_height:1%“在IE下也行,留着吧。
六、需要注意的一些兼容细节
1, FF下给 div 设置 padding 后会导致 width 和 height 增加(DIV的实际宽度=DIV宽+Padding), 但IE不会.
解决办法:给DIV设定IE、FF两个宽度,在IE的宽度前加上IE特有标记" * "号。
2, 页面居中问题.
body {TEXT-ALIGN: center;} 在IE下足够了,但FF下失效。
解决办法:加上"MARGIN-RIGHT:auto; MARGIN-LEFT: auto; "
3, 有的时候在IE6上看见一些奇怪的间隙,可我们高度明明设好了呀。
解决办法:试试在有空隙的DIV上加上"font-size:0px;"
4, 关于手形光标. cursor: pointer.而hand 只适用于 IE.
5, 浮动IE6产生的双倍距离
#box{ float:left;
width:100px;
margin:0 0 0 100px;
}
这种情况之下IE6会产生200px的距离
解决办法:加上display:inline,使浮动忽略
这里细说一下block,inline两个元素,Block元素的特点是:总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:和其他元素在同一行上,…不可控制(内嵌元素);
#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的的效果
6 页面的最小宽度
min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。比如要设置背景图片,这个宽度是比较重 要的。
解决办法:为了让这一命令在IE上也能用,可以把一个〈div〉 放到 〈body〉 标签下,然后为div指定一个类:
然后CSS这样设计:
#container{
min-width: 600px;
width:e­xpression(document.body.clientWidth 〈 600? “600px”: “auto” );
}
第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。
7、UL和FORM标签的padding与margin
ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值。FORM标签在IE中,将会自动margin一些边距,而在FF中margin则是0;
解决办法:css中首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,后面就不会为这个头疼了.
8 ,DIV浮动IE文本产生3象素的bug
下面这段是我在网上粘过来的
左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.
#box{
float:left;
width:800px;}
#left{
float:left;
width:50%;}
#right{
width:50%;
}
*html #left{
margin-right:-3px;
//这句是关键
}
HTML代码
〈DIV id=box〉
〈DIV id=left〉〈/DIV〉
〈DIV id=right〉〈/DIV〉
〈/DIV〉
针对上面这段代码,下面说一下我的理解:
第一、只要right定义了width属性,在FF下绝对就会两行显示
第二、两个width都定义为百分比的话,就算都为100%在IE下也会一行显示。所以上面那句所谓“这句是关键”根本没用,不加也在一行,除非你width定义的是数值才用得上。
所以说上面这段代码其实用处不大,至少在FF下不行。其实只要只定义left的width就行了,right不定义width就不管在IE还是FF下都能成功,但这样的话父DIV BOX并没有真正的包含LEFT和RIGHT两子DIV,可以用我上面说的第5种办法解决。最简单的办法就是在RIGHT中加上float:left就OK了,真磨叽!
9,截字省略号
.hh {
-o-text-overflow:ellipsis;
text-overflow:ellipsis;
white-space:
nowrapoverflow:hidden;
}
这个是在越出长度后会自行的截掉多出部分的文字,并以省略号结尾。技术是好技术,很多人都喜欢乱用,但注意Firefox并不支持。

  IE浏览器从IE8开始添加了兼容模式,开启后会以低版本的IE进行渲染。兼容模式有可能会导致网页显示出问题,于是通常在HTML中添加下列代码来使 IE 使用固定的渲染模式:

  代码如下:

<metahttp-equiv="X-UA-Compatible"content="IE=8"><!--以IE8模式渲染-->
<metahttp-equiv="X-UA-Compatible"content="IE=7"><!--以IE7模式渲染-->

还 有一种情况,在IE8下只有不使用兼容模式页面才能显示正常,但是如果设定为IE8的模式,在IE9中却会导致CSS3失效。看来,需要针对 IE8、IE9 分别 禁用兼容模式。怎么办呢?可以在后台判断浏览器版本,如果是IE8就输出content="IE=8",如果是IE9就输出 content="IE=9"。其实还可以单纯通过HTML来实现的,HTML代码如下:
  <metahttp-equiv="X-UA-Compatible"content="IE=9; IE=8; IE=7; IE=EDGE">

经测试后完美解决了兼容模式问题,这样设置后IE中设置兼容模式的按钮也会消失,可以按F12打开“开发人员工具”来检查浏览器模式。

写CSS之前 先要把所有浏览器的 样式都统一了!~
然后在写CSS样式就OK了 这些样式叫重置文件 奉上我的重置文件 希望可以对你有帮助 这个东西是可以根据自己的习惯改变的!~
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { border: 0 none; font-family: inherit; font-size: 100%; font-style: inherit; font-weight: inherit; margin: 0; outline: 0 none; padding: 0; }
:focus { outline: 0 none; }
table { border-collapse: collapse; border-spacing: 0; }
caption, th, td { font-weight: normal; text-align: left; }
a img, iframe { border: medium none; }
ol, ul { list-style: none outside none; }
input, textarea, select, button { font-family: inherit; font-size: 100%; }
body { font-family: "宋体"; font-size: 12px;}

有这些还是仅仅不够的 还要注意IE6的BUG 主要问题都出现在IE6里
手工奉上 望采纳!~


css怎样解决ie浏览器旋转不兼容
在IE下的旋转有两种:第一种:CSS样式 filter:progid:DXImageTransform.Microsoft.BasicImage(rotation:1)其中rotation属性只有四个值:0,1,2,3 分别表示的旋转度数是:0度,90度,180度,270度。查看参考文档,请点击这里,但是想要旋转其他任意度数上面的方法就不适合了,这就需要下面的方法。第二种...

ie6 ie7 ie8 ie9和FireFox Chrome中css区别总结
1.DOCTYPE 影响 CSS 处理2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多...

我用HTML中div+css写的网页,有的IE支持,有的IE就不支持,Goole直接错位...
10.使用了“float:left;display:inline”的ul的奇怪表现。可以看出这句css是针对ie6下的double margin bug 而加上的display:inline,这也是我的css体系里的重要一环,在《ul使用心得》一文中有相关阐述。而这句css用在ul上会让你痛苦不堪。点到为止,这里不能多说哈。11.img下的留白,大家看这段...

怎样解决css在浏览器的兼容问题?
第二点是 ie对于css的magin padding 等默认值为0px,但ff却不一样,为了保持外观的统一性,即使padding为0你也要写上,以免ff在浏览中的错位。IE与Firefox的CSS兼容大全 1.DOCTYPE 影响 CSS 处理2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行3.FF: body 设置 text-...

IE6和CSS 表格不兼容的问题
IE6用浮动的时候,会产生双倍距,而且padding会计算在总宽度之内。兼容方法,去除padding水平方向上的距离,全部用width固定,保证每个下拉框所用的宽度足够即可。

以下CSS代码在IE和火狐中的兼容问题怎样解决啊,求帮忙
即第一个灰色的元素。只有当你的上外边距超过中间那两个浮动元素的高度时,你才能看到间隙。在IE6和IE7中,则最后那个绿色DIV的上边距,是距离中间那两个浮动元素的,所以你设置了3px,它们中间就会是3px间距。解决办法是,给中间的浮动元素设置下外边距,将最后一个DIV外下推3px。

html css的代码如何让它兼容到ie9浏览器,最简单的方法?
一、如何调试 IE 浏览器?1.IE7以上版本可以按F12直接打开开发者调试工具进行调试。2.安装虚拟机。3.利用设置元素border: 1px solid red; outline: 1px solid red;进行调试。二、什么是CSS hack?在 CSS 和 HTML里如何写 hack?在 CSS 中 ie6、ie7的 hack 方式?1.CSS hack由于不同厂商的...

...我的IE浏览器按我自己的设计来显示页面内容,就自己写了一个CSS...
下面读图会让您看的更清楚,从哪里选择样式表就好了 INTERNET属性-常规-辅助功能-样式表选取好就好了

css 不生效,ie兼容模式就行
这是因为IE自从IE9开始,会对网页的MIME类型进行验证,如果MIME类型不正确的话,就不会加载相应的样式表或者JS文件,这也是出于安全的考虑。造成IE9以上浏览器无法加载CSS样式表的,有几个可能的原因,一个可能是你的CSS样式引用的书写方式不正确,导致在IE9和IE10下面无法通过MIME的检查,如果是这个原因...

CSS与浏览器不兼容问题?
很明显是CSS 的问题;如果是IE6,那你得检查一下边距;如果是IE7及以上,那你要规范一下CSS 就可以了

北塘区15256864568: 如何处理css与IE兼容性问题 -
兆汤聚磺: IE浏览器从IE8开始添加了兼容模式,开启后会以低版本的IE进行渲染.兼容模式有可能会导致网页显示出问题,于是通常在HTML中添加下列代码来使 IE 使用固定的渲染模式:代码如下:<metahttp-equiv="X-UA-Compatible"content="IE=...

北塘区15256864568: CSS样式如何解决IE浏览器不同版本的兼容问题? -
兆汤聚磺: 这个有点麻烦,我做的时候都是每个浏览器页面的调试,用hack去兼容,慢慢做做就会越来越得心应手,good luck!

北塘区15256864568: 如何解决ie浏览器的css样式兼容性问题 -
兆汤聚磺: 现在主流的程序到能很好兼容新版本ie. 旧版本ie用的人少了,可以忽略. 如果想解决兼容问题,可以再专门为ie写一个css文件, 当使用ie浏览器访问时自动调用该css即可.

北塘区15256864568: 如何解决css在ie下不兼容的问题? -
兆汤聚磺: 可以看的出来 这个皮肤的开发者 完全抛弃了IE浏览器的兼容 而他的下面注释也正好说明了这一点 请用谷歌浏览器或者FF浏览器 当一个开发者彻底抛弃某个浏览器的兼容时 他写的CSS样式 往往是恐怖效果的 你这个网站也是 需要大面积调试并且更换CSS样式代码 甚至页面结构也需要更换一些 建议你还是放弃这个皮肤吧~ 修复这个网站兼容不是不可以 只是太麻烦

北塘区15256864568: CSS ie浏览器不兼容怎么办?其他流浪器都可以 -
兆汤聚磺: 浏览器兼容性问题,百度有很多相应的文档可供参考,针对不兼容的属性,给IE写自己的兼容属性方法是常见的解决方案

北塘区15256864568: 在CSS中怎样解决IE的兼容问题 -
兆汤聚磺: 楼上的错了,"_"是IE6 "+"是IE7,IE6不认IE6也无法以!important区分重要级,所以也可以用这个来hackIE6和其他浏览器,关键是可以通过验证

北塘区15256864568: 如何快速解决IE的CSS兼容问题 -
兆汤聚磺: 所谓的不兼容很大意义上是指初始值的不同.比如:默认div层中.不同浏览器是有默认的padding值和其他属性值的我做个示范 如下:body{font-size:12px; font-family:宋体, Arial, Helvetica, sans-serif;padding:0px; margin:0px;}div,form,img,ul,li,...

北塘区15256864568: css浏览器不兼容问题怎么解决 -
兆汤聚磺: 1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了.缺点是要控制内容不要换行 2. margin加倍的问题 设置为float的div在ie下设置的margin会加倍.这是一个ie6都存在的...

北塘区15256864568: 怎样解决css在浏览器的兼容问题? -
兆汤聚磺: 1.目前来说对css支持最好的公认的是火狐浏览器,错位的原因在css代码书写不规范. 2.兼容性:对于CSS(样式表)并不是所有浏览器的所有版本都支持的很好,比如IE5以前的浏览器对于CSS的支持就不是很好.而现在使用IE5以前版本浏览...

北塘区15256864568: 怎么用一行代码解决CSS各种IE各种兼容问题 -
兆汤聚磺: 没有这种一行代码就可以兼容IE浏览器的,只能在做页面的时候注意一下个别属性在IE浏览器和其他浏览器之间的区别还有用什么样式可以减少各种浏览器之间的兼容性问题,比如说在写代码的时候要注意清除一下上一级div的浮动, 当然你可...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网