【发布时间】:2017-12-26 10:22:05
【问题描述】:
我有一个容器,里面有另外两段文字——一个标题和一个描述,例如:
.item {
box-sizing: border-box;
width: 33%;
text-align: center;
padding: 20px;
border: 1px solid #CCC;
min-height: 200px;
margin: 20px;
}
.item-title {
font-size: 28px;
margin-bottom: 15px;
}
.item-description {
font-size: 12px;
}
<div class="item">
<div class="item-title">Title</div>
<div class="item-description">Some descriptive text</div>
</div>
<div class="item">
<div class="item-title">A Much Longer Title</div>
<div class="item-description">Some other descriptive text</div>
</div>
下面是想要的效果图:
我希望标题垂直居中在同一点(蓝线),无论它包含多少行。描述应始终位于下方,与标题的距离相同,顶部对齐(红线)。所以蓝线不动,红线可以。
到目前为止我已经尝试过:
对标题应用负 Y 变换。这样做的原因是它向上移动了标题,但描述文本没有跟随它。
边距:尝试设置百分比垂直边距,但当然这是相对于父元素的宽度而不是元素的高度,它没有达到预期的效果。
Flexbox:与边距相同的结果。
位置:绝对在标题上。可以垂直对齐标题,但很难对齐描述。
经过一段时间的试验和大量阅读后,似乎不可能,但如果有人设法解决这个问题,我很想知道如何解决。
【问题讨论】:
-
如果你把标题设为
flex: 1,你可以得到这个jsfiddle.net/Lg0wyt9u/2083 -
@NenadVracar 使顶部对齐正确,但似乎占用了容器中未被描述占用的所有空间,该描述被推到底部。
标签: html css flexbox centering