今天工作中有一个需求,需要将所有的图片底部对齐,高度大小不同,图片就用简单的div来代替
HTML如下:
<div class="parent">
<div class="child" style="height:50px;">
AA
</div>
<div class="child" style="height:70px;">
BB
</div>
<div class="child" style="height:60px;">
CC
</div>
</div>
这里的parent和child高度未知
CSS方法如下:
一、 absolute + bottom
首先想到的是用absolute定位来做,但这不是一个好方法原因基于两点:
- 绝对定位之后子元素脱离文档流会相互覆盖,需要对每个子元素指定不同的left或者margin
- 由于子元素脱离文档流,父元素高度会收缩,导致看不到完整的子元素。解决方法是给父元素指定宽度或者对子元素指定一个负的bottom,而且这个高度或者bottom要至少等于最高子元素。但是子元素高度并不知道,所以这不是个好方法。
.parent {
position: relative;
}
.child {
position: absolute;
bottom: 0;
width: 50px;
}
二、vertical-align + inline-block
指定子元素为内联块元素,然后指定他们的垂直对齐方式
.child {
display: inline-block;
vertical-align: bottom;
}
vertical-align不同于text-align,是指定自身相对于父元素的垂直对齐方式
这种方式简单而且只在子元素上设置样式即可,兼容性也非常好
三、flex + align-items
在父元素上设置
.parent {
display: flex;
align-items: flex-end;
}