垂直和水平中心在div内对齐

时间:2013-02-02 19:37:17

标签: css header alignment center

我需要一些帮助。我一直试图让它正确数小时,我找不到有效的解决方案。

<div id="Header">
<img src='http://3.bp.blogspot.com/-rN0cMMTn_Mw/ToQ6VTghSOI/AAAAAAAAAfs/xl1XMFyn7Jo/s640/18_5_orig.jpg'
/>
 <h1>siajdasdasdasd</h1>

<p>sdhaosidasdas</p>

Example of what im trying to do

我希望有一个液体标题,左边的图像对齐,标题与中心对齐,但是如果我增加img / div的高度,则两者都必须对齐到高度的中间位置

3 个答案:

答案 0 :(得分:1)

不得不添加更多div,但它有效。 http://jsfiddle.net/74Rnq/23/

HTML:

<div id="Header">
    <div class="wrap">
        <img src='http://3.bp.blogspot.com/-rN0cMMTn_Mw/ToQ6VTghSOI/AAAAAAAAAfs/xl1XMFyn7Jo/s640/18_5_orig.jpg'/>
        <div class="text">
            <h1>siajdasdasdasd</h1>
            <p>sdhaosidasdas</p>
        </div>
    </div>
</div>

CSS:

#Header {
    position: relative;
    height: 200px;
    padding: 15px;
    background: #DBE6EC;
    border-bottom: 1px solid #595959;
    overflow: auto;
}
#Header h1, p {
    text-align: center;
    letter-spacing: -1px;
    text-align: center;
    font-size: 2em;
    color: #1F1F1F;
}
#Header p {
    font-size: 1em;
}
#Header img {
    float: left;
    max-height:100px;
}

#Header .wrap {
    display: block;
    position: absolute;
    width: 100%;
    top: 50%;
    margin-top: -50px; /* Half of wrap div height */
}

#Header .wrap .text {
    position: absolute;
    top: 50%;
    margin-top: -27.5px; /* Half of text div height */
    width: 100%;
}

答案 1 :(得分:0)

对于现代浏览器,您可以通过display:table,table-row table cell:

来完成

像这样修改你的html:

<div id="Header" class="table">
    <div class="row">
        <div class="cell">
            <img src='http://3.bp.blogspot.com/-rN0cMMTn_Mw/ToQ6VTghSOI/AAAAAAAAAfs/xl1XMFyn7Jo/s640/18_5_orig.jpg'/>
        </div>
        <div class="cell main">
             <h1>siajdasdasdasd</h1>
             <p>sdhaosidasdas</p>
        </div>
    </div>
</div>

#Header {
    background: #DBE6EC;
    border-bottom: 1px solid #595959;
    position:relative;
    padding:15px;
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    box-sizing: border-box; 
}

.table {
    display:table;
    width:100%;
}

.row {
    display:table-row;
}

.cell {
    display:table-cell;
    vertical-align:middle;
}

.cell.main {
    width:100%;
}

更新的小提琴是here。这个解决方案在ie7中不起作用。 vertical align middle有一个较旧的解决方法,如果你必须支持ie7。

答案 2 :(得分:0)

使容器div display: table-cell和每个子div display: table-cell。然后你可以给孩子div vertical-align: middle,他们将始终垂直居中。

HTML:

<div id="Header">
    <div id="image">
        <img src='http://3.bp.blogspot.com/-rN0cMMTn_Mw/ToQ6VTghSOI/AAAAAAAAAfs/xl1XMFyn7Jo/s640/18_5_orig.jpg' />
    </div>
    <div id="title">
       <h1>siajdasdasdasd</h1>
       <p>sdhaosidasdas</p>
    </div>
</div>

和CSS:

#Header {
    padding: 15px;
    background: #DBE6EC;
    border-bottom: 1px solid #595959;
    display: table;
}
#Header h1, p {
    text-align: center;
    letter-spacing: -1px;
    font-size: 2em;
    color: #1F1F1F;
}
#Header p {
    font-size: 1em;
}
#Header img {
    float: left;
    max-height:100px;
}
#title{
    display: table-cell;
    vertical-align: middle;    
    width: 100%;
}
#image{
    display: table-cell;
    vertical-align: middle;
}

Aaand这里是 jsFiddle