当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > 网页在IE6下正常在IE7下错位的问题

CSS样式表
CSS网页设计 IE8和IE7共存
CSS2 打印属性让打印HTML文档不出问题
制作网页中设计段落缩进的方法
CSS border 属性使用说明
CSS border-style 属性使用方法
CSS border-color 属性使用方法
CSS border-width 属性使用教程
CSS padding属性定义边内补白
CSS margin 属性定义边外补白
网页布局教程 掌握CSS网页布局属性
css 背景样式属性说明
span margin 设置生效
html 滚动条在IE6和IE7中兼容性问题
IE6 两个div有间隙的问题(IE 3px bug)
CSS 数字和字母将容器撑大问题解决
换个角度看页面重构中的语义化
DIY属于个人开发使用的CSS Reset
CSS 空格引起网页布局间距问题
CSS 网页制作时遇到问题的快速参考技巧
css li 去掉点的样式写法

CSS样式表 中的 网页在IE6下正常在IE7下错位的问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 85 ::
收藏到网摘: n/a

问:

css+div做的网页在ie7里错位了,在ie6里好好的,这个在css里可以改吗?

答:

用CSS+DIV来写网站代码的好处显而易见,这里不多说了,但由于不同浏览器对CSS的解释不统一,造成不同浏览器下页面错位的现象十分常见……
cs.Phontol.com页面乱的原因是因为IE6认为一个DIV超宽了,所以把本应float;right的DIV挤了下去。Phontol.com而如果设置为IE6下显示正常的宽度,则在IE7和Firefox下看页面就会少了一块一样,也很别扭….
cs.Phontol.com怎么办?用CSS HACK 来改写CSS代码
cs.Phontol.com
cs.Phontol.com改写前:xxx. yyy:{width:600px;} (当设为IE7和Firefox下显示正常的600px时,IE6下会错位,改为590px,则IE6下正常,IE7和Firefox下显示不完美)
cs.Phontol.com改写后: xxx. yyy{width:600px;* width:600px;_ width:590px;}
cs.Phontol.com(Firefox不认识*和_,而IE都认识*,IE7不支持_,IE6支持_)
cs.Phontol.com顺序千万不要乱,因为当出现重复定义时,浏览器默认按最后一下渲染,所以一定要先正常,再*,最后_。Phontol.com
cs.Phontol.com这样Firefox读取时只看到了正常的定义,而IE都能看到第二个*的定义,于是忽略第一个正常的定义,而IE中因为IE7不再支持_,所以按照第一个带*号的执行,IE6支持_,所以认为带*后的也是重复定义,予以忽略,执行最后一个定义。Phontol.com
cs.Phontol.com
cs.Phontol.com有人喜欢用!important来进行CSS HACK,但我觉得!important写起来太长了,不如*和_简单直观。Phontol.com
cs.Phontol.com
cs.Phontol.com只要记住IE7=*,IE6=_,然后按照先Firefox后IE7,最后IE6的顺序进行编写,一般就可以保证大部分用户浏览正常了。Phontol.com 来源:收集整理于互联网

IE下很多地方可以省略一些层定义的浮动属性,但是FF不行,必须每个个层都写清楚,几个DIV层水平排列的时候,IE6中必须要加display:inline;,不然前端会出现双倍间距,而FF中则加不加display都显示正常.这些都是由浏览器默认值的不同而引起的,你看到那些大站的布局在各浏览器中都显示正常,是因为他们把这些默认有区别的地方都定义清楚了.

下面的兼容要点引自互联网

CSS对浏览器的兼容性具有很高的要求,通常情况下IE和Firefox(简称FF)存在很大的解析差异,这里介绍一下兼容要点。

常见的兼容问题:

1.DOCTYPE影响CSS处理

2.FireFox火狐:div设置margin-left,margin-right为auto时已经居中,IE不行

3.FireFox火狐:body设置text-align时,div需要设置margin:auto(主要是margin-left,margin-right)方可居中

4.FireFox火狐:设置padding后,div会增加height和width,但IE不会,故需要用!important多设一个height和width

5.FireFox火狐:支持!important,IE则忽略,可用!important为FireFox火狐特别设置样式

6.div的垂直居中问题:vertical-align:middle;将行距增加到和整个DIV一样高line-height:200px;然后插入文字,就垂直居中了。缺点是要控制内容不要换行

7.cursor:pointer可以同时在IEFireFox火狐中显示游标手指状,hand仅IE可以

8.FireFox火狐:链接加边框和背景色,需设置display:block,同时设置float:left保证不换行。参照menubar,给a和menubar设置高度是为了避免底边显示错位,若不设height,可以在menubar中插入一个空格。

9.在mozillafirefox和IE中的BOX模型解释不一致导致相差2px解决方法:
div{margin:30px!important;margin:28px;}
注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:
div{maring:30px;margin:28px}
重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;

10.IE5和IE6的BOX解释不一致
IE5下
div{width:300px;margin:0 10px 0 10px;}
div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改
div{width:300px !important;width/**/:340px;margin:0 10px 0 10px}
关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持

11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义
ul{margin:0;padding:0;}就能解决大部分问题