为什么不垂直对齐:中间工作?然而,垂直对齐:顶部确实有效。

跨度{垂直对齐:中间;}<div><img src=“https://via.placeholder.com/30“alt=”小img“/><span>不起作用</span></div>


当前回答

2022年,浏览器支持率达到96%,我很惊讶没有人建议使用网格布局。

在本JSFiddle中,3行是实现OP目标所需的全部内容(但提供了多条路线以供比较):

div {
    display: grid;
    grid-template-columns: min-content max-content;
    align-items: center
}

一个额外的UI细节将包括可选的gap属性的使用,该属性允许调整父网格容器(div)中每个网格项之间的空间。

网格布局的优势

轻松垂直和水平对齐网格项网格项之间的空间调制任何大小的图像(使用最小内容)和文本长度(使用最大内容的一行或使用最小内容的换行(未在fiddle中显示))都可以工作-无需在CSS中硬编码图像尺寸(两种用法都在JSFiddle中演示)现代方法


网格布局的缺点

较旧的浏览器支持更具挑战性网格布局通常需要更有经验的开发人员来正确实现,而不是像块/内联块显示那样简单

其他回答

基本上,你必须降到CSS3。

-moz-box-align: center;
-webkit-box-align: center;

在这些答案中还没有找到一个有余量的解决方案,所以这里是我对这个问题的解决方案。

只有当您知道图像的宽度时,此解决方案才有效。

HTML

<div>
    <img src="https://placehold.it/80x80">
    <span>This is my very long text what should align. This is my very long text what should align.</span>
</div>

CSS

div {
  overflow:hidden;
}
img {
   width:80px
   margin-right:20px;
   display:inline-block;
   vertical-align:middle;
}
span {
   width:100%;
   margin-right:-100px;
   padding-right:100px;
   display:inline-block;
   vertical-align:middle;
   box-sizing:border-box;
   -moz-box-sizing:border-box;
   -webkit-box-sizing:border-box;
}

该代码适用于IE和FF:

<div>
  <img style="width:auto; height:auto;vertical-align: middle;">
  <span>It does work on all browsers</span>
</div>

您可以做的另一件事是将文本的行高度设置为<div>中图像的大小。然后将图像设置为垂直对齐:中间;

这是最简单的方法。

对于记录,对齐“命令”不应该在SPAN上工作,因为它是一个内嵌标记,而不是块级标记。对齐、边距、填充等功能在内联标记上不起作用,因为内联的目的是不中断文本流。

CSS将HTML标记分为两组:内联和块级。搜索“css block vs inline”,会出现一篇很棒的文章。。。

http://www.webdesignfromscratch.com/html-css/css-block-and-inline/

(理解CSS的核心原则是它不那么烦人的关键)