2024年4月13日发(作者:)

查看文章

zzdiv+css - Firefox和IE浏览器兼容问题 - padding-right在IE6下导致抖动2008-01-11

1733由于IE6的盒模型计算缺陷,padding-right在特定的情况会下导致抖动。

[出现抖动的代码]

最近在写一个Div+Css布局的网站首页,以前写的页面都统一width900px;不存在什么布局

呀 什么float的设置。现在没办法呀!要对页面进行切割,分块。幸好,有点css的基础,

不过用起来就比较郁闷了。在ie和firefox下,相同的属性值往往会有不同的显示效果。没

办法 要兼容浏览器 只得一个一个bug去找。但完全兼容浏览器是无法做到的,所以也只能

将个大概的效果展示出来,不要偏差太大太明显就行。

首先,需要提出的是float这个浮动属性,这是div+css布局的关键所在。

floatleft;floatright;是常用的浮动属性。为了使div能在一行排列,不得补用到它们。呵

呵!不就是个float吗?这有什么好提的,要浮动我就float一下呀。哎!话是这么说,但

真正用到时却出问题了。在ie下,只要前一个div有floatleft;后面的div宽度不超过(总

body的宽度)-(前一个div的宽度),后面的div就自动浮动,并排列在同一行。ie和firefox

下,这点效果是一样。好,接着往下,下一行也这样布局,就分两栏吧。

style type=textcss

#div1{}{width200px;height80px;floatleft;border1px solid blue;}

#div2{}{width600px;height80px;border1px solid blue;}

style

div

div id=div1div

div id=div2div

div

div style=clearboth;margin-top20px; id=div3

div

这样的布局,在ie下和火狐下的显示效果就不同了 在firefox下的margin-top20px;没效

果。。。。

在ie下div3的margin-top有效果,而在firefox下却没效果。为什么?

翻来覆去的想,终究没有想明白。没办法了,后来我有改css.偶然,给div2加上了floatleft

属性,然后margin-top20px都有效果了。郁闷吧 呵呵 不过还是没弄明白为什么会这样,问

题解决了就ok了!

下一个问题是ul的问题。在ie下和firefox下注意了 ul{margin-left10px;}的效果是

不同的,这样设置的效果才会相同

ul{padding0;margin-left10px;}在火狐下默认的padding!=0所以需要这样来设置下 ...

呵呵 愚昧的个人见解!

div+css扩展框问题浮动下降 IE与Firefox兼容性整理2008-08-14 1057div+css扩展框问

题浮动下降 IE与Firefox兼容性整理

图文混排 容易导致 扩展框问题.

divimg src=imagesindex_ 扩展框问题div

这样排版容易导致 扩展框问题.

尽量定义宽高给定值

浮动下降问题[size=+0]

加上 {float:left;} 即可```

IE6的双倍边距BUG

解决办法是加上displayinline

IE6下为什么图片下方有空隙产生

解决这个BUG的方法也有很多,可以是改变html的排版,或者设置img 为displayblock或

者设置vertical-align属性为vertical-aligntop bottom middle text-bottom都可以解

决.

IE6下这两个层中间怎么有间隙

这个IE的3PX BUG也是经常出现的,解决的办法是给.right也同样浮动 floatleft 或者相

对IE6定义.left

如何对齐文本与文本输入筐

遇到此种问题,设置文本框的 vertical-alignmiddle 就可以了

为什么FF下文本无法撑开容器的高度

[size=+0]

标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被

撑开需要怎样设置呢?办法就是去掉height设置min-height200px; 这里为了照顾不认识

min-height的IE6 可以这样定义:

{

heightauto!important;

height200px;

min-height200px;

}

如果实在没有办法解决一些细节问题,可以用这个方法.FF对于”!important”会自动优先解

析,然而IE则会忽略.

关于容器的包涵关系

很多时候,尤其是容器内有平行布局,例如两、三个float的div时,宽度很容易出现问题。

在IE中,外层的宽度会被内层更宽的div挤破。一定要用Photoshop或者Firework量取像

素级的精度。

1.写两句代码来控制一个属性,区别Firefox与IE:

backgroundrange; backgroundgreen;

这一句代码写出来时,你用Firefox浏览,会发现背景是橙色的,而IE里却是绿色的,很简

单,因为Firefox不能识别,而IE6,IE7都可以识,标准浏览器(如Firefox,Opera,Netscape)

不能识别;。

2.写两句代码来控制一个属性,区别IE7与IE6:

backgroundgreen !important;backgroundblue;

这一句代码写出来时,你用IE7浏览,会发现,写了该代码的区域背景是绿色的,如果用IE6

浏览,却是蓝色的,这是因为IE7能识别!important,一但识别了,就执行,忽略了后面的

那一句,但IE6却不能识别!important,所以前面部分跳过,直接执行了后半部份.

3.写三句代码来控制一个属性,区别Firefox,IE7,IE6:

backgroundrange;backgroundgreen !important;backgroundblue;

这一句会使在Firefox在,背景呈橙色,IE7中为绿色,IE6中为蓝色,道理和前面一样,Firefox

不能识别,所以后面两句都不执行,直接执行第一句,IE7当然也能执行第一行代码,但是

因为第二句,他也能识别,所以就执行了第二句代码,把前面的效果给过滤了,而最后一句,

IE7是不能识别的。IE6不能识别!imprtant,本来运行了第一句代码了,第二句不能识别,

那就理所当然的执行了最后一句。

注:IE都能识别;标准浏览器(如Firefox,Opera,Netscape)不能识别;IE6能识别,但不能

识别 !important,IE7能识别,也能识别!important;FF不能识别,但能识别!important;

div+css在FireFox里居中的问题。2008-07-15 1531尽管有CSS的vertical-align特性,

但是并不能有效解决未知高度的垂直居中问题(在一个DIV标签里有未知高度的文本或图片

的情况下)。

标准浏览器如Mozilla, Opera, Safari等.,可将父级元素显示方式设定为TABLE(display

table;) ,内部子元素定为table-cell (display table-cell),通过vertical-align特性

使其垂直居中,但非标准浏览器是不支持的。

非标准浏览器只能在子元素里设距顶部50%,里面再套个元素距顶部-50% 来抵消。

解决代码如下:

CSS

body {padding 0; margin 0;}body,html{height 100%;}

#outer {height 100%; overflow hidden; position relative;width 100%;

backgroundivory;}

#outer[id] {display table; position static;}

#middle {position absolute; top 50%;} for explorer only

#middle[id] {display table-cell; vertical-align middle; position static;}

#inner {position relative; top -50%;width 400px;margin 0 auto;} for explorer only

order {border 1px solid green; background-color ivory;}

div id=outer

div id=middle

div id=inner class=greenBorder

div

div

div

以上CSS代码的优点是没有hacks,采用了IE不支持的CSS2选择器#value[id]。

CSS2选择器#value[id]相当于选择器#value,但是Internet Explorer不支持这种类型的选

择器。同样地.value[class],相当于.value,这些只有标准浏览器能读懂。

div+css实现Firefox和IE6兼容的垂直居中2008年03月10日 星期一 0206div+css实现

Firefox和IE6兼容的垂直居中

Firefox中使用display table-cell; vertical-align middle;可以实现div垂直居中,而

IE6中则需要借助IE6中css的特点实现垂直居中。为了实现Firefox和IE6兼容的垂直居

中,还需要 借助于!important标记。Firefox支持!important标记,而IE6忽略!important

标记,因此可以使用! important标记区别Firefox和IE6。

[示例代码]

html

body

div style=display table-cell; vertical-align middle; height 200px; border 1px

solid red;

p垂直居中,Firefox onlyp

p垂直居中,Firefox onlyp

p垂直居中,Firefox onlyp

div

div style=border 1px solid red; height 200px; position relative;

div style=position absolute; top 50%;

div style=position relative; top -50%;

p垂直居中,IE6 onlyp

p垂直居中,IE6 onlyp

p垂直居中,IE6 onlyp

div

div

div

div style=border 1px solid red; height 200px; position relative; display

table-cell; vertical-align middle;

div style=position static !important; position absolute; top 50%;

div style=position relative; top -50%;

p垂直居中,Firefox IE6 onlyp

p垂直居中,Firefox IE6 onlyp

p垂直居中,Firefox IE6 onlyp

IE VS FireFox

CSS 兼容要点:DOCTYPE 影响 CSS 处理

FF div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行

FF body 设置 text-align 时, div 需要设置 margin auto(主要是

margin-left,margin-right) 方可居中

FF 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important

多设一个 height 和 width

FF 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式

div 的垂直居中问题 vertical-alignmiddle; 将行距增加到和整个DIV一样高

line-height200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行

cursor pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以

FF 链接加边框和背景色,需设置 display block, 同时设置 float left 保证不换行。参照

menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在

menubar 中插入一个空格XHTML+CSS兼容性解决方案小集