我已经尝试了很多方法来将儿童元素作为绝对垂直中心的中心,但使用任何技术都无法取得成功. Here’s one example what I’ve tried: HTML(不能改变): div class="foo" h1blah blah/h1 pfoo/p pbar/p/div C
Here’s one example what I’ve tried:
HTML(不能改变):
<div class="foo"> <h1>blah blah</h1> <p>foo</p> <p>bar</p> </div>
CSS:
.foo{ position: absolute; top: 0; bottom: 0; background: yellow; } .foo:before{ content: ""; display: inline-block; vertical-align: middle; height: 100%; }
请注意:我无法更改标记,即我无法用父div包装.foo,甚至不能用div包装.foo中的所有子项.
那么,我怎样才能将它们垂直居中于整个窗口?
您可以通过使用css flexbox布局来实现这一点:JSFiddle – DEMO
.foo { position: absolute; top: 0; bottom: 0; background: yellow; height: 100%; display: flex; flex-direction: column; justify-content: center; flex-wrap: wrap; /* align-items: center; */ } h1, p { margin:0; }
<div class="foo"> <h1>blah blah</h1> <p>foo</p> <p>bar</p> </div>