Flexbox 不垂直居中内容
Flexbox not centering content vertically
所以我尝试使用 flexbox 将我的名字放在屏幕中间。
在浏览了许多教程之后,他们说我完成此任务所需的唯一代码是...
div {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
<div>
<h1>
David
</h1>
</div>
如果您尝试上面的代码,它只会使框水平居中。
我发现了一些其他代码可以达到预期的效果:
div {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
position: absolute;
}
<div>
<h1>
David
</h1>
</div>
但这似乎有点老套,而且似乎是错误的。
对于我做错的任何帮助,我将不胜感激。
谢谢。
在 CSS 中,块级元素通常默认占父元素的 100% 宽度。
因此,无需执行任何操作,h1
将展开以覆盖其父项的整个宽度:
div { border: 1px solid black; }
h1 { background-color: yellow; }
<div>
<h1>
David
</h1>
</div>
但是,同样的行为 不适用于 身高 。您需要为容器指定高度,否则它默认为 height: auto
(内容的高度)。
因此,内容水平居中而非垂直居中。
水平方向上,有很多 space 可以四处移动,居中没有问题。
垂直没有space,因为没有多余的高度。
Solution: Add height to your container.
html, body {
height: 100%;
margin: 0;
}
div {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
}
<div>
<h1>
David
</h1>
</div>
参考文献:
- How to Center Elements Vertically and Horizontally in Flexbox
所以我尝试使用 flexbox 将我的名字放在屏幕中间。
在浏览了许多教程之后,他们说我完成此任务所需的唯一代码是...
div {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
<div>
<h1>
David
</h1>
</div>
如果您尝试上面的代码,它只会使框水平居中。
我发现了一些其他代码可以达到预期的效果:
div {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
position: absolute;
}
<div>
<h1>
David
</h1>
</div>
但这似乎有点老套,而且似乎是错误的。
对于我做错的任何帮助,我将不胜感激。
谢谢。
在 CSS 中,块级元素通常默认占父元素的 100% 宽度。
因此,无需执行任何操作,h1
将展开以覆盖其父项的整个宽度:
div { border: 1px solid black; }
h1 { background-color: yellow; }
<div>
<h1>
David
</h1>
</div>
但是,同样的行为 不适用于 身高 。您需要为容器指定高度,否则它默认为 height: auto
(内容的高度)。
因此,内容水平居中而非垂直居中。
水平方向上,有很多 space 可以四处移动,居中没有问题。
垂直没有space,因为没有多余的高度。
Solution: Add height to your container.
html, body {
height: 100%;
margin: 0;
}
div {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
}
<div>
<h1>
David
</h1>
</div>
参考文献:
- How to Center Elements Vertically and Horizontally in Flexbox