问题 如何垂直居中对齐位置:相对元素


我今天正在尝试一些基本的CSS,我偶然发现了一个问题。我希望有人可以帮助我。

如何垂直居中对齐 父容器 到具有位置的画布:相对于它?父容器有一个子元素,其position:absolute。子元素已定位到父容器的中心。

我为此创建了一个JSFiddle。 http://jsfiddle.net/exmRf/

干杯, 维恩。


7013
2017-08-28 11:08


起源



答案:


一个解决方案是包装你的 .container 有两个包装;给第一个 display: table; 和 height: 100%; width: 100%; 第二个 display: table-cell; 和 vertical-align: middle;。还要确保你的 body 和 html 有全高。

这是一个有点工作的演示: 小链接

另一种方法是申请 top: 50%; 到你的 .container 和 margin-top: -150px; (300px / 2 = 150px)。 (请注意,此方法要求您知道容器的确切高度,因此它 威力 不完全是你想要的,但也可能是!)。后一种方法的一个小工作演示: 另一个小链接

我希望有所帮助!


13
2017-08-28 11:19



哇谢谢!它的工作原理,只是好奇,是唯一的方法吗?这是最优雅的方式吗?我正在寻找适用于现代浏览器的解决方案。所以过时的浏览器对我来说无关紧要。 - Vennsoh
@Vennsoh检查我更新的答案以获得另一种解决方案。 - Chris
谢谢!我从来不知道为什么身体需要高度:100%以便这个工作?任何快速的答案? - Vennsoh
@Vennsoh因为如果你没有指定 height: 100% 至 body,它只会足够大,以适应元素,而不是全屏。并且您希望容器在整个屏幕中居中,因此您需要 body 涵盖所有。 - Chris


答案:


一个解决方案是包装你的 .container 有两个包装;给第一个 display: table; 和 height: 100%; width: 100%; 第二个 display: table-cell; 和 vertical-align: middle;。还要确保你的 body 和 html 有全高。

这是一个有点工作的演示: 小链接

另一种方法是申请 top: 50%; 到你的 .container 和 margin-top: -150px; (300px / 2 = 150px)。 (请注意,此方法要求您知道容器的确切高度,因此它 威力 不完全是你想要的,但也可能是!)。后一种方法的一个小工作演示: 另一个小链接

我希望有所帮助!


13
2017-08-28 11:19



哇谢谢!它的工作原理,只是好奇,是唯一的方法吗?这是最优雅的方式吗?我正在寻找适用于现代浏览器的解决方案。所以过时的浏览器对我来说无关紧要。 - Vennsoh
@Vennsoh检查我更新的答案以获得另一种解决方案。 - Chris
谢谢!我从来不知道为什么身体需要高度:100%以便这个工作?任何快速的答案? - Vennsoh
@Vennsoh因为如果你没有指定 height: 100% 至 body,它只会足够大,以适应元素,而不是全屏。并且您希望容器在整个屏幕中居中,因此您需要 body 涵盖所有。 - Chris


演示


-1
2017-08-28 11:12



不适用于IE8。 - Chris
嗨罗希特,抱歉没​​有让我的问题更清楚。我想要的是将父容器垂直居中到画布。我不是在寻找将子元素放在父元素中的方法。 - Vennsoh
检查一下 jsfiddle.net/exmRf/16 - Rohit Azad
罗希特,你给出的例子不起作用。父元素未与画布居中对齐。 - Vennsoh