代码之家  ›  专栏  ›  技术社区  ›  Jeremy Kauffman

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

  •  26
  • Jeremy Kauffman  · 技术社区  · 14 年前

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

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

    <div style="line-height: 20px">
      <img style="width: 12px; height: 12px;"/>
      Blah blah blah
    </div>
    

    Here's a jsFiddle example . 这个例子也说明了原因 vertical-align: middle 不起作用。

    我希望img以div的文本为中心,也就是说,即使文本被包装成多行,图像也会以单行为中心。理想情况下,解决方案不会涉及设置边缘/填充的形象,将工作,即使我不知道线的高度。

    我读过的东西:

    How do I vertically align text next to an image with CSS? (处理图像较大的情况,此处似乎不适用)

    Understanding vertical-align

    3 回复  |  直到 7 年前
        1
  •  31
  •   Pär Wieslander    10 年前

    问题的原因是图像相对于图像垂直居中 x-height 周围的文字。这可以在放大的屏幕截图上非常清楚地看到 baseline mean line 包括以下内容:

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

    无论使用哪种字体大小或行高,图像的对齐方式都是相似的。所以,从排版的角度来说, 图像实际上是垂直对齐的 . 但是,如果您想调整对齐方式,使图像的中心更接近平均线,只需使用 margin-bottom

    img.icon {
        margin-bottom: 0.25em;
    }
    

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

    这里是 a comparison before and after the margin-adjustment ,字体大小不同。

        2
  •  4
  •   Nik Chankov    14 年前

    <div style="line-height: 20px; background: url(path/image.gif) 5px 5px; no-repeat; padding-left: 40px;">
      Blah blah blah
    </div>
    

    这会将图像定位在左上角。至少我会这么做。

    当做

        3
  •  3
  •   vtambourine    14 年前

    试着让父母 display: table display: table-cell . 之后 vertical-align: middle 应该以“餐桌方式”工作。