垂直居中对齐的图像比顶部更靠近底部
Vertically middle-aligned image is closer to the bottom than the top
在这个例子中,为什么图像没有准确地呈现在包围 DIV 的中间?
div {
border: 1px solid gray;
line-height: 100px;
}
img {
height: 96px;
vertical-align: middle;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
如果我们 运行 这个例子,我们会看到图像更靠近底部边框而不是顶部边框。
为什么会这样?
在 DIV 中垂直对齐图像以使其恰好位于 DIV 垂直中间的正确方法是什么?
您可以在 div 的顶部和底部添加相等的填充。这有助于您将图像居中对齐。还有许多其他方法可以使项目居中对齐。
请仔细阅读文章https://vanseodesign.com/css/vertical-centering/
div {
border: 1px solid gray;
padding: 20px 0;
}
img {
height: 96px;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
在 DIV 中垂直对齐图像的正确方法是什么?
你可以用 vertical-align: middle;
div {
border: 1px solid gray;
}
img {
height: 96px;
vertical-align: middle;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg" />
<span class="caption">Foo</span>
</div>
或者你可以使用 flexbox
div {
border: 1px solid gray;
display:flex;
align-items:center;
}
img {
height: 96px;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg" />
<span class="caption">Foo</span>
</div>
如果我们查看文档,我们会读到:
middle
Aligns the middle of the element with the baseline plus half the x-height of the parent.
因此我们需要识别这些值以了解对齐方式。如果我们引用 to the above figure 我们可以清楚地看到基线,我们也可以看到行高(在我们的例子中由 100px 定义)。您还可以注意到,中间不是 div 的中间,而是由不同值(字体系列、字体大小等)定义的文本的中间。
使用简单的话:您的对齐参考不是 div,而是 div.
中的文本
为了更容易让 line-height
保持默认值并定义一个 font-size
代替(行高将等于字体大小):
div {
border: 1px solid gray;
font-size:50px;
}
img {
height: 46px;
vertical-align: middle;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
with a different font-family
<div style="font-family:arial">
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
你可以清楚地看到 middle
离 div 的中间很远,如果我们改变 font-family
对齐方式也会改变。
为了对齐包含文本的 div 中的内容,更好地依赖 flexbox,例如:
div {
border: 1px solid gray;
font-size:50px;
display:flex;
align-items:center;
}
img {
height: 46px;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
元素会在需要的地方,他需要指定
img {
height: 96px;
width: 120px;
margin-left: calc(50% - 60px);
vertical-align: middle;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
在这个例子中,为什么图像没有准确地呈现在包围 DIV 的中间?
div {
border: 1px solid gray;
line-height: 100px;
}
img {
height: 96px;
vertical-align: middle;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
如果我们 运行 这个例子,我们会看到图像更靠近底部边框而不是顶部边框。
为什么会这样?
在 DIV 中垂直对齐图像以使其恰好位于 DIV 垂直中间的正确方法是什么?
您可以在 div 的顶部和底部添加相等的填充。这有助于您将图像居中对齐。还有许多其他方法可以使项目居中对齐。 请仔细阅读文章https://vanseodesign.com/css/vertical-centering/
div {
border: 1px solid gray;
padding: 20px 0;
}
img {
height: 96px;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
在 DIV 中垂直对齐图像的正确方法是什么?
你可以用 vertical-align: middle;
div {
border: 1px solid gray;
}
img {
height: 96px;
vertical-align: middle;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg" />
<span class="caption">Foo</span>
</div>
或者你可以使用 flexbox
div {
border: 1px solid gray;
display:flex;
align-items:center;
}
img {
height: 96px;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg" />
<span class="caption">Foo</span>
</div>
如果我们查看文档,我们会读到:
middle
Aligns the middle of the element with the baseline plus half the x-height of the parent.
因此我们需要识别这些值以了解对齐方式。如果我们引用 to the above figure 我们可以清楚地看到基线,我们也可以看到行高(在我们的例子中由 100px 定义)。您还可以注意到,中间不是 div 的中间,而是由不同值(字体系列、字体大小等)定义的文本的中间。
使用简单的话:您的对齐参考不是 div,而是 div.
中的文本为了更容易让 line-height
保持默认值并定义一个 font-size
代替(行高将等于字体大小):
div {
border: 1px solid gray;
font-size:50px;
}
img {
height: 46px;
vertical-align: middle;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
with a different font-family
<div style="font-family:arial">
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
你可以清楚地看到 middle
离 div 的中间很远,如果我们改变 font-family
对齐方式也会改变。
为了对齐包含文本的 div 中的内容,更好地依赖 flexbox,例如:
div {
border: 1px solid gray;
font-size:50px;
display:flex;
align-items:center;
}
img {
height: 46px;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>
元素会在需要的地方,他需要指定
img {
height: 96px;
width: 120px;
margin-left: calc(50% - 60px);
vertical-align: middle;
}
<div>
<img src="https://upload.wikimedia.org/wikipedia/commons/0/02/Russula_emetica_117475.jpg"> Foo
</div>