垂直对齐绝对定位div

时间:2014-05-16 01:34:14

标签: html css

我正在摆弄Jquery Cycle幻灯片并尝试添加几个按钮。如果没有top: #px; tomfoolery,我似乎无法将它们对齐;我喜欢将它垂直对齐到div的中间位置。

CSS

#slidecontainer {
    margin-left: auto;
    margin-right: auto;
    position: relative;
    width: 800px;
    height: 200px;
}
.slidecontrols {
    top: 50px;
    position: absolute;
    z-index: 100;
    width: 100%;
}
.slidecontrols a {
    background-color: white;
}
.slidecontrols a.next {
    position: absolute;
    right: 0;
}
.slideshow {
    width: 100%;
    height: 100%;
}
.bannered {
    height: 200px;
    width: 800px;
}

HTML

<div id="slidecontainer">
    <div class="slideshow" id="slideoptions">
        <img src="http://i.imgur.com/ufZ0cxL.jpg" class="bannered" alt="" /></a>
        <img src="http://i.imgur.com/RZTrFy4.jpg" class="bannered" alt="" /></a>
    </div>
    <div class="slidecontrols">
        <a href="#" class="next">right</a>
        <a href="#" class="prev">left</a>
    </div>
</div>

Here's a Fiddle。将vertical-align: middle;添加到.slidecontrols绝对没有任何作用。

3 个答案:

答案 0 :(得分:2)

如果您不想猜测或设置任何像素,可以选择其他选项:

.slidecontrols {
    top: 50%;
    position: absolute;
    z-index: 100;
    width: 100%;
    -webkit-transform: translate(0, -50%);
    transform: translate(0, -50%);
}

答案 1 :(得分:1)

制作顶部:50%的幻灯片控制,使链接准确对齐中心。

.slidecontrols {
    top: 50%;
    position: absolute;
    z-index: 100;
    width: 100%;
}

如果您认为按钮的高度为20px,则另一个可能性

top: calc(50% - 10px); // 10px is half of buttons height

这会将它完全对齐在中心

如果您有position: absolute,则垂直对齐将无效。

答案 2 :(得分:1)

假设控件的高度为20px,您可以使用top50%,然后使用负margin-top值的一半元素&#39;高度。在这种情况下,-10px

Example Here

.slidecontrols {
    top: 50%;
    margin-top: -10px;
    position: absolute;
    z-index: 100;
    width: 100%;
}

或者,如果您需要动态高度的解决方案:

Example Here

.slidecontrols {
    position:absolute;
    top:0; right:0;
    bottom:0; left:0;
    z-index: 100;
    width: 100%;
    height:100%;
    display:table;
}
.slidecontrols a {
    display:table-cell;
    vertical-align:middle;
}
相关问题