垂直对齐包装

时间:2012-04-21 01:28:10

标签: html css center vertical-alignment

我正在搞乱一个无聊的网站,并试图弄清楚如何垂直对齐我的包裹,我失败了大声笑。我已经水平对齐它,只需要帮助垂直对齐它。 (是的,我尝试过vertical-align:middle,但它不起作用。)

    * { margin:0;  padding:0; }
    html { height:100%; }
    body { background:/*url(images/bg.jpg)*/#14181a; }
    #wrap { width:960px;  height:55%;  margin:0 auto;  background:#293033; }

    <div id="wrap">
    <div id="logo"></div>
    <div id="navgation"></div>
    <div id="content"></div>
    <div id="footer"></div>
    </div>

4 个答案:

答案 0 :(得分:2)

如果您不必支持旧浏览器,则可以使用显示框。我有以下课程:

.vertically_centered {
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-pack: center;
  -webkit-box-align: center;

  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-pack: center;
  -moz-box-align: center;

  display: box;
  box-orient: horizontal;
  box-pack: center;
  box-align: center;
}

然后在里面放几乎任何东西。由于您希望“wrap”div垂直居中,请尝试将vertical_centered类指定给您的body元素。

有关使用灵活方框的更多详细信息,您可以查看以下文章:http://www.css3.info/introducing-the-flexible-box-layout-module/

答案 1 :(得分:1)

可以使用表格布局完成垂直对齐。您需要一个显示为表格单元格的元素,它的父级应显示为表格。然后你可以添加垂直对齐并且它可以工作。

首先,这里有一个js小提琴,显示它在行动。它将包装内容集中在包装内! (如果我误解了你需要将包裹本身放在中心,只要问我并且我会编辑)http://jsfiddle.net/YWdDC/1/

    * { margin:0;  padding:0; }
    html { height:100%; }
    .wrap-wrapper {
        background: url('images/bg.jpg') #14181a;
        display: table;
     }
    .wrap {
        width:960px;
        height:300px;
        margin:0 auto;
        background:#293033;
        display: table-cell;
        vertical-align: middle;
    }​

    <div class="wrap-wrapper">
        <div class="wrap">
            <div id="logo">Logo</div>
            <div id="navgation">Nav</div>
            <div id="content">Content</div>
            <div id="footer">Footer</div>
        </div>
    </div>​

答案 2 :(得分:1)

如果要垂直对齐div对象,请使用position:relative和top值,如下所示:

#wrap {width:960px; height:55%; margin:0 auto; background:#293033; position:relative; top:20px;}

如果要将#wrap div中的文本与特定的垂直对齐方式对齐,例如动态上标,请在文本容器上使用vertical-align:

#wrap span {font-size:14px; line-height:16px; vertical-align:2px;}

答案 3 :(得分:0)

您的问题是this post中讨论的确切问题。

  

方法1

     

以下示例进行了两个(非平凡的)假设。如果你可以的话   满足这些假设,那么这个方法适合你:

     
      
  1. 您可以将要居中的内容放在块中,并为该内部内容块指定固定高度。
  2.   
  3. 绝对定位此内容是可以的。 (通常很好,因为内容居中的父元素仍然可以流动。
  4.         

    如果您能接受上述必需品,解决方法是:

         
        
    1. 将父容器指定为position:relative或position:absolute。
    2.   
    3. 在子容器上指定固定高度。
    4.   
    5. 设置位置:绝对值和顶部:子容器上的50%,将顶部向下移动到父级的中间位置。
    6.   
    7. 设置margin-top:-yy,其中yy是子容器高度的一半,以抵消项目。
    8.         

      ...

           

      方法2

           

      此方法要求您能够满足以下条件   条件:

           
          
      1. 您只需要一行文本。
      2.   
      3. 您可以为父元素指定固定高度。
      4.         

        如果您能接受上述必需品,解决方法是:

             
            
        1. 将父元素的行高设置为所需的固定高度。
        2.   

我发现方法2通常是最简单和最一致的垂直对齐方式,虽然它仅限于一条线,这通常很好,因为我的大多数垂直对齐需要的是菜单项,无论如何只需要一条线。