【发布时间】:2014-02-27 06:56:12
【问题描述】:
我知道有很多方法可以让 CSS 居中。水平居中任何东西都非常简单。但是,如果您要将任何东西垂直居中,那将是一个全新的故事。 我只是想知道为什么我们不能只说 bottom-align:auto;顶部对齐:自动;就像我们想要水平居中的东西一样? 为什么在水平居中某物时看起来像居中一样简单的东西看起来那么简单?我知道有很多方法,但我们只是说你有一个未知大小的元素,你想在另一个未知大小的元素中居中。
我已经坐了将近两天了,没有找到关于这个答案的好问题,我们有很多不同的方法来水平居中项目,但是为什么没有一个单一的 CSS 标准想出一种方法来垂直居中?这是一件坏事吗?它会让人哭泣还是随机分娩?它会熔化核反应堆吗?
我们生活在 2014 年。似乎没有必要使用 Javascript 来做一些简单的事情,比如在另一个元素中居中。
编辑: 我的意思的代码示例: http://jsfiddle.net/VsakD/
CSS:
div.parentbox
{
width:500px;
height:500px;
border-style:solid;
}
div.childbox
{
width:300px;
height:300px;
border-style:solid;
margin-left:auto;
margin-right:auto;
margin-top:auto;
margin-bottom:auto;
}
HTML:
<div class="parentbox">
<div class="childbox">
I shall be in the middle of parentbox regardless of its size!
</div>
</div>
【问题讨论】:
-
请提供一些代码。我们比故事更了解代码
-
display:flex 赢得胜利
-
vertical-align 适用于表格单元格内的内容(td 或 display as )或内联框之间的内容,使用它们的基线作为参考。 display:table-cell 在 IE8 中工作,它让事情变得非常简单:)
-
如果只是一行文字,您可以将
line-height设置为等于父级的宽度。否则,您可以只使用绝对定位的偏移边距(单击here 获取有关绝对垂直定位的博文)。或者,就像@GCyrillus 建议的那样,将父级设为display:table,将其设为display:table-cell;vertical-align:middle的子级。 -
这是一个从 2006 年开始的旧测试,没有使用 javascript,它在 IE55 和 6 gcyrillus.free.fr/essai/v-align-midlle-block-tous.html 中工作,它涉及内联块和布局(FF 1 可以理解显示表而不是 IE6 :) gcyrillus.free.fr/essai/v-align-midlle-block-tous.html ) 红色元素显示正在发生的事情,如果选择了 display:table 方法,现在可以是伪元素或不使用:)
标签: javascript jquery html css