如何在一条线上垂直居中图像?

Jer*_*man 26 html css alignment vertical-alignment

当图像小于线高时,在线上居中图标的最佳方法是什么?

例如(样式内联以便于阅读):

<div style="line-height: 20px">
  <img style="width: 12px; height: 12px;"/>
  Blah blah blah
</div>
Run Code Online (Sandbox Code Playgroud)

这是一个jsFiddle示例.这个例子也说明了为什么vertical-align: middle不起作用.

我希望img以div的文本为中心.也就是说,即使文本被包裹到多行,图像也会以单行为中心.理想情况下,解决方案不会涉及在图像上设置边距/填充,即使我不知道线高也可以工作.

我读过的东西:

如何使用CSS垂直对齐图像旁边的文本?(处理图像较大的情况,这里似乎不适用)

了解垂直对齐

Pär*_*der 31

问题的原因是图像相对于周围文本的x高度垂直居中.这可以很清楚地看到的,其中的放大屏幕截图基线平均线周围的文本被包括:

illustration of a vertically aligned image compared to the surrounding text's baseline and mean line

无论您使用哪种字体大小或行高,图像都会以相似的方式对齐.因此,从印刷意义上讲,图像实际上是垂直对齐的.但是,如果您想调整对齐方式以使图像的中心更接近平均线,只需使用margin-bottom以下方法将其向上移动一点:

img.icon {
    margin-bottom: 0.25em;
}
Run Code Online (Sandbox Code Playgroud)

0.25 em的值是相当任意选择的,基于我试用时看起来不错的东西.根据口味自由调节.

这是边距调整之前和之后的比较,具有不同的字体大小.