CSS图片居中问题?

html如下:

<header class="header">
    <span class="logo">
        <img src="img/baidu.png"/>
    </span>

CSS中为什么我在<header>和<span>中设置了vertical-align:middle;都不会使图片产生居中效果,
clipboard.png
而用设置为表格的方式才能生效,

clipboard.png

新手真心求问~?

阅读 5.8k
5 个回答

header没有闭合吧,

解决方法如下 在img前面加一个span

<div>
  <span></span>
  <img src="img/star.png" alt="">
</div>

给span设置属性

span{
height:100%;
display:inline-block;
vertical-align:middle;
}
div{
border:1px solid #333;
width:500px;
height:400px;
text-align:center;
}
img{
vertical-align:middle;
}

vertical-align 的是根据元素的基线baseline与父元素的基线来计算的,是相对于元素本身所处的行来说的,该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐.

<div class="parent">
    <span class="child">
        123456
        <img class="middle" src="xxx" />
    </span>
</div>

<style>
    .middle {
        vertical-align: middle;
    }
</style>

此时你将 .child 设置为行内块级元素,然后对其设置高度,这个高度并不是img本身的所在行的行高,所有在这种情况下是不会实现你想要的效果的。不管.child是否设了高度,imgvertical-align只相对自己所在行。

The vertical-align CSS property specifies the vertical alignment of an inline or table-cell box. -- MDN

当然inline-block也是可以的。

栗子
plunker

vertical-align:middle 使子元素居中,只能在表格单元或者元素display属性设置为table-cell 生效。 这里有个视频教程可以解决你的疑惑。http://www.imooc.com/learn/542

要在span中设置display:table-cell

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题