Dav*_*vid 5 html css centering flexbox
所以我试图使用 flexbox 将我的名字放在屏幕中间。
在浏览了许多教程之后,他们说我需要完成的唯一代码是......
div {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
Run Code Online (Sandbox Code Playgroud)
<div>
<h1>
David
</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
如果您尝试上面的代码,它只会将框水平居中。
我找到了一些其他的代码来实现预期的效果:
div {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
position: absolute;
}
Run Code Online (Sandbox Code Playgroud)
<div>
<h1>
David
</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
但这似乎有点hacky,而且似乎是错误的。
对我做错的任何帮助肯定会非常感激。
谢谢你。
在 CSS 中,默认情况下,块级元素通常占据父元素的 100%宽度。
因此,不做任何事情, anh1
将扩展以覆盖其父级的整个宽度:
div { border: 1px solid black; }
h1 { background-color: yellow; }
Run Code Online (Sandbox Code Playgroud)
<div>
<h1>
David
</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
然而,这种行为并不能适用于高度。您需要为容器指定高度,否则默认为height: auto
(内容的高度)。
因此,内容是水平居中而不是垂直居中。
横向上,有足够的空间可以四处走动,居中也没有问题。
垂直方向,没有空间可走,因为没有额外的高度。
解决方案:为您的容器添加高度。
html, body {
height: 100%;
margin: 0;
}
div {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div>
<h1>
David
</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
参考: