网页布局DIV+CSS,在IE中能显示居中的,在火狐上不能显示居中

如题所述

之前看到很多人一直都问这个问题,不过当时我没当一回事,因为在 CSS 中要垂直居中,多数是在有高度的情况下,或者容器高度不定的情况下才用,看上去比较舒服,而且实现的方法也不少,不一定要拘泥于和 table 布局一样。不过最近有人问了几个例子,看来对此的需求还不少。现在就把我经验拿出来分享一下,希望大家鼓鼓掌。

首先,要有一个概念:凡是 table 布局可以实现的,CSS 一定可以实现。CSS 可以实现的,table 未必能做到。

现在来几个例子:

一、单行内容的居中
只考虑单行是最简单的,无论是否给容器固定高度,只要给容器设置 line-height 和 height,并使两值相等,再加上 over-flow: hidden 就可以了
.middle-demo-1{
height: 4em;
line-height: 4em;
overflow: hidden;
}

优点:
1. 同时支持块级和内联极元素
2. 支持所有浏览器
缺点:
1. 只能显示一行
2. IE中不支持<img>等的居中
要注意的是:
1. 使用相对高度定义你的 height 和 line-height
2. 不想毁了你的布局的话,overflow: hidden 一定要
为什么?

二、多行内容居中,且容器高度可变
也很简单,给出一致的 padding-bottom 和 padding-top 就行
.middle-demo-2{
padding-top: 24px;
padding-bottom: 24px;
}

优点:
1. 同时支持块级和内联极元素
2. 支持非文本内容
3. 支持所有浏览器
缺点:
容器不能固定高度

三、把容器当作表格单元
CSS 提供一系列diplay属性值,包括 display: table, display: table-row, display: table-cell 等,能把元素当作表格单元来显示。这是再加上 vertical-align: middle, 就和表格中的 valign="center" 一样了。
.middle-demo-3{
display: table-cell;
height: 300px;
vertical-align: middle;
}

可惜IE不支持这些属性,不过在其他浏览器上显示效果非常完美。
要注意的是:和一个合法的<td>元素必须在<table>里一样,display: table-cell 元素必须作为 display: table 的元素的子孙出现。

优点:
不用说了吧,就是表格,效果和表格一模一样
缺点:
IE下无效

四、以毒攻毒!用 IE 的 bug 解决 IE 中的绝对居中
先不得不说一句,IE 真的是个很烂的浏览器,CSS1中的定义都不支持,害得要我们转个大圈子来造居中。不过就像我说的,凡是 table 布局可以实现的,CSS 一定可以实现,即使在 IE 里也不例外。我研究 IE layout 模式多年,还是找出了一个可以在 IE 中绝对居中的方法。这个方法就是基于 IE layout 的 bug,也可以算以毒攻毒。至于原理,不要问我,这是独门秘学,何况三言两语也讲不清楚,只要好用就行
.middle-demo-4{
height: 300px;
position: relative;
}
.middle-demo-4 div{
position: absolute;
top: 50%;
left: 0;
}
.middle-demo-4 div div{
position: relative;
top: -50%;
left: 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-16
  尊敬的用户,您好!很高兴为您答疑
  这是常见的css兼容问题所致,如果在ie中正常的样式在firefox出现此类显示异常,请您检查一下您的对象嵌套关系,一般这种情况都是因为父类对象无法正常获取全局宽度所致。建议考虑使用js动态获取宽度后进行样式重置以解决问题。
  希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。本回答被网友采纳
第2个回答  2010-08-24
估计是你把W3c那段头部去掉了。也有可能是其它原因。你问题也没问具体呀。
第3个回答  2010-08-24
这个你得加一段for 火狐的代码,解释一下,或者div+sss的最外面包个table
第4个回答  2010-08-24
.{width:px;margin:0 auto}通用

我的网站是用div+css做的,在IE7.0里显示正常,在火狐里就乱了,
color:red;} \/* 在IE浏览中,浏览器不会解析第二个样式,故字体的颜色是蓝色的,而FF就可以解析第二个样式,根据最近原则,在FF中,字体的颜色是红色的。*\/ \/\/利用这个区别你就可以编写不同的样式来适应不用的浏览器。\/\/由于FF和IE的边距等一些内容的默认值不一样,建议你看看《css网站布局实录...

自作的网页在IE6里能正常显示,到了火狐里就显示错位是怎么回事_百度知 ...
原因一:浏览器和CSS+DIV网页代码兼容性导致网页出现错位 原因二:放置网站广告位的JS广告本身的问题 第三步、解决问题 (1)针对第一种原因,由于不同浏览器对CSS的解释不统一,造成不同浏览器下页面错位的现象十分常见。我们可以利用CSS HACK 来改写CSS代码:改写前:xxx. yyy:{width:290px;} (当...

div+css布局中利用float设置了4个div,每行显示两个,共两行,在ie中显 ...
您好!很高兴为您答疑!要清楚默认的padding,margin值,外围的大容器要够宽。先在这四个DIV外层套一个DIV,然后设置为relative属性,清除内部浮动;然后内部的四个DIV都设置为absolute属性,第一个左上都为0,第二个右上为0,后两个以此类推。您可以在火狐社区了解更多内容。希望我的回答对您有所帮助...

...器打开怎么就乱七八糟的啊。(网页布局用div+css的)
网页兼容问题,不同浏览器,可以通过设置HACK的方式让其兼容,注意W3C标准,这样火狐下就没有问题,然后针对IE再做调整,这样比较方便。您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。

div+css右浮动时的问题 在IE 360浏览器上显示没问题,用火狐就不行了...
浏览器兼容很重要 有2个方法 1确定下你的IE版本 简单的可以找css hack 解决缺点后期不好维护 2 以后有时间多看看关于兼容的文章 写代码规范点

背景图在火狐下怎么不居中显示? 这是在火狐下的显示效果
尊敬的用户,您好!很高兴为您答疑。图片显示的位置是需要通过css等样式代码进行控制的,而默认展示下,不通浏览器下默认显示效果存在差异,自然会出现不一样的效果。据此,您只需要在您的图片适当位置添加样式代码即可实现居中展示。希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。

div为什么 IE左对齐火狐居中呢
有一些样式ie和火狐的默认定义是不一样的。建议你首先在火狐中做好你想要的网页。然后单独调试或定义ie中的样式。

自己写的网页在IE和谷歌上都能正常显示,在火狐上就不能正常显示了,这是...
您好!很高兴为您答疑。您所说的情况叫做兼容问题。此类兼容问题一般分2种。1是样式兼容,1是js脚本兼容。您的情况有可能兼有这2种情况。一般的做法是使用火狐浏览器的元素查看器,通过分析元素的嵌套关系,分析出究竟是哪个层级的样式导致的显示异常,然后基于此进行修复。如果对我们的回答存在任何疑问,...

css+div样式的网站为什么在不同的机器上显示的效果不同
IE,FF,GOOGLE的浏览器现在显示出来的效果都有差异的 因为内核不同 甚至在IE6,IE7之间的效果都不用,因为版本不同 所以做一个网页都要满足不同的浏览器就不是那么容易了 并不是说你的语法都对,而且符合标准就显示都正确了,正是由于有IE等对WEB标准支持不太好的浏览器,才导致这种显示不一致的状态...

关于切片问题,在IE以及其他浏览器下显示正常,在火狐下有缝隙,请问如何...
您好!很高兴为您答疑!1像素偏移,这是典型的CSS跨浏览器兼容问题,如果您是使用table或者div布局,尝试将所有包裹对象的border设置为0看看,就是指定一个值。您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。

相似回答