在 FF、IE6 和 IE7 中工作的 HTML 中垂直和水平居中的实用解决方案

Posted

技术标签:

【中文标题】在 FF、IE6 和 IE7 中工作的 HTML 中垂直和水平居中的实用解决方案【英文标题】:Practical solution to center vertically and horizontally in HTML that works in FF, IE6 and IE7 【发布时间】:2010-09-08 03:21:33 【问题描述】:

在 Firefox、IE6 和 IE7 中有效的 html 内容垂直和水平居中的实用解决方案是什么?

一些细节:

我正在寻找整个页面的解决方案。

您只需指定要居中的元素的宽度。元素的高度在设计时是未知的。

当最小化窗口时,只有在所有空白区域都消失后才会出现滚动。 也就是说,屏幕的宽度应该表示为:

"leftSpace 宽度=(screenWidth-widthOfCenteredElement)/2"+ "centeredElement 宽度=widthOfCenteredElement"+ "rightSpace 宽度=(screenWidth-widthOfCenteredElement)/2"

高度也一样:

"topSpace 高度=(screenHeight-heightOfCenteredElement)/2"+ "centeredElement 高度=heightOfCenteredElement"+ "bottomSpace 高度=(screenWidth-heightOfCenteredElement)/2"

实际上,我的意思是使用表格是可以的。我打算将此布局主要用于登录等特殊页面。所以 CSS 纯度在这里并不那么重要,而遵循标准对于未来的兼容性是可取的。

【问题讨论】:

【参考方案1】:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>Centering</title>
 <style type="text/css" media="screen">
  body, html height: 100%; padding: 0px; margin: 0px;
  #outer width: 100%; height: 100%; overflow: visible; padding: 0px; margin: 0px;
  #middle vertical-align: middle
  #centered width: 280px; margin-left: auto; margin-right: auto; text-align:center;
 </style> 
</head>
<body>
 <table id="outer" cellpadding="0" cellspacing="0">
  <tr><td id="middle">
   <div id="centered" style="border: 1px solid green;">
    Centered content
   </div>
  </td></tr>
 </table>
</body>
</html>

community.contractwebdevelopment.com 的解决方案也不错。如果您知道需要居中的内容的高度似乎会更好。

【讨论】:

【参考方案2】:

对于水平:

<style>
body

    text-align:left;

.MainBlockElement

    text-align:center;
    margin: 0 auto;

</style>

您需要正文中的 text-align:left 来修复 IE 呈现的错误。

【讨论】:

【参考方案3】:

这是您想要完成的任务吗?如果不是,请解释与下图有什么不同?

【讨论】:

这不是我通常想要的。居中的内容应该是固定大小(以像素为单位),而不仅仅是屏幕的 50%。我通过指定内容的宽度来修复它。并寻找不指定固定高度的解决方案。所以这个布局可以用于不同但相同宽度的东西。 这将导致当您调整窗口大小时,您的内容将始终保持相同大小,但居中。【参考方案4】:

来自http://www.webmonkey.com/codelibrary/Center_a_DIV

#horizon        
    
    text-align: center;
    position: absolute;
    top: 50%;
    left: 0px;
    width: 100%;
    height: 1px;
    overflow: visible;
    display: block
    

#content    
    
    width: 250px;
    height: 70px;
    margin-left: -125px;
    position: absolute;
    top: -35px;
    left: 50%;
    visibility: visible
    

<div id="horizon">
   <div id="content">
      <p>This text is<br><emphasis>DEAD CENTRE</emphasis ><br>and stays there!</p>
   </div><!-- closes content-->
</div><!-- closes horizon-->

【讨论】:

【参考方案5】:

对于这个问题你可以使用这个样式

#yourElement 
   margin:0 auto;
   min-width:500px;

【讨论】:

以上是关于在 FF、IE6 和 IE7 中工作的 HTML 中垂直和水平居中的实用解决方案的主要内容,如果未能解决你的问题,请参考以下文章

CSS FF,IE7,IE6的条件CSS

在 Chrome 中工作的 SVG 上 CSS 动画的 transform-origin,而不是 FF

css浏览器兼容问题

为啥我写的焦点图在IE6下强制关闭,打不开网页,我是用jquery写的,在IE7,IE8,FF下都正常!

css 兼容

IE 样式属性前后缀兼容写法略统计