元素在一个div中的垂直对齐

我有一个div有两个图像和一个h1 。 所有这些都需要在div内相互垂直对齐。

其中一个图像需要在div内absolute定位。

这是在所有常用浏览器上工作所需的CSS是什么?

<div id="header">
    <img src=".." ></img>
    <h1>testing...</h1>
    <img src="..."></img>
</div>

哇,这个问题很受欢迎。 这是基于vertical-align属性的误解。 这篇优秀的文章解释道:

了解vertical-align ,或由Gavin Kistner撰写的“如何(不)垂直居中内容”。

“如何以CSS为中心”是一款出色的网络工具,可帮助您针对不同情况找到必要的CSS集中属性。


简而言之(并防止链接腐烂):

  • 内联元素 (仅内联元素)可以通过vertical-align: middle在其上下文中vertical-align: middle 。 但是,“上下文”不是整个父容器高度,而是它们所在文本行的高度。jsfiddle示例
  • 对于块单元,垂直对齐更困难,并且强烈依赖于具体情况:
  • 如果内部元素可以具有固定高度 ,则可以将其位置设置为absolute并指定其heightmargin-toptop位置。 jsfiddle的例子
  • 如果中心元素由一条线构成,并且其父高度是固定的 ,则可以简单地设置容器的line-height来填充其高度。 根据我的经验,这种方法非常灵活。 jsfiddle的例子
  • ......还有更多这样的特殊情况。

  • 我用这个非常简单的代码:

    HTML:

    <div class="ext-box">
        <div class="int-box">
            <h2>Some txt</h2>
            <p>bla bla bla</p>
        </div>
    </div>
    

    CSS:

    div.ext-box { display: table; width:100%;}
    div.int-box { display: table-cell; vertical-align: middle; }
    

    显然,无论你使用.class还是#id ,结果都不会改变。


    现在Flexbox支持正在增加,这个应用于包含元素的CSS将垂直居中包含的项目:

    .container {        
        display: flex;
        align-items: center;
    }
    

    如果您还需要定位Explorer 10和旧的(<4.4)Android浏览器,请使用前缀版本:

    .container {
        display: -ms-flexbox;
        display: -webkit-flex;
        display: flex;
    
        -ms-flex-align: center;
        -webkit-align-items: center;
        -webkit-box-align: center;
    
        align-items: center;
    }
    
    链接地址: http://www.djcxy.com/p/7149.html

    上一篇: Vertical alignment of elements in a div

    下一篇: Center Image Vertical and Horizontal