如何使 div 垂直居中? [复制]

Posted

技术标签:

【中文标题】如何使 div 垂直居中? [复制]【英文标题】:How do I center the div vertically? [duplicate] 【发布时间】:2011-05-25 00:41:31 【问题描述】:

可能重复:What's The Best Way of Centering a Div Vertically with CSS

.title_text_only
position:absolute;
width:100%;
display:none;
z-index:9;
top:50%;
bottom:50%;
text-align:center;
color:#fff;
font-size:18px;
text-shadow: 1px 1px 1px #666;

现在,它似乎不起作用。前 50% 不垂直居中。这有点落伍了。好像上边框是 50%。

【问题讨论】:

先尝试添加任意高度 【参考方案1】:

如果可以指定框的高度,可以使用margin-top: -[height / 2]px(填写[height / 2],注意大多数浏览器会在100%缩放时将小数像素向上取整)。

如果你可以指定其父级的高度,你可以这样做:

parent 
    height: [height]px;

child 
    /* Make the element part of the inline flow, as vertical-align isn't supported on block elements */
    display: -moz-inline-box; /* Old Firefox doesn't support inline-block */
    display: inline-block;
    /* IE < 8 doesn't support inline-block on native block-level elements */
    *display: inline;
    *zoom: 1;

    /* The interesting bit */
    line-height: [height]px;
    vertical-align: middle;

如果子项的内容预计会换行成多行,您可以将其换行在重置line-height 的子子项中。

【讨论】:

【参考方案2】:

How to vertically center a div for all browsers?

【讨论】:

【参考方案3】:

top: 50%; 完全符合您的怀疑:它将顶部 edge 放置在 50% 的高度。您还可以通过应用等于元素高度一半的负垂直边距来抵消这种影响。例如,如果元素是 100px 高,你可以添加这个属性:

margin-top: -50px;

【讨论】:

【参考方案4】:

如果元素的高度是固定的,则执行以下操作

CSS:

.title_text_only
position:absolute;
width:100%;
display:none;
z-index:9;
**top:50%;**
bottom:50%;
text-align:center;
color:#fff;
font-size:18px;
text-shadow: 1px 1px 1px #666;
**margin-top: -(half the height)**

如果要垂直居中动态高度的 div,则需要 javascript..

document.getElementById('myElement').style.marginTop = (-1) * document.getElementById('myElement').offsetHeight / 2

【讨论】:

以上是关于如何使 div 垂直居中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在页面上垂直居中div? [复制]

如何使文字在div中水平和垂直居中的css代码

如何使div中的文本垂直居中?

css如何使div里面的文字垂直对齐

如何在 Bootstrap 4 中垂直居中 div? [复制]

如何使用 CSS 垂直居中文本? [复制]