将文本与div的底部对齐

时间:2013-06-15 11:49:29

标签: css html text vertical-alignment

我尝试将我的文本与其他帖子的div底部对齐,并在stackoverflow中解答我学会用不同的css属性来处理这个问题。但我无法完成它。基本上我的html代码是这样的:

<div style='height:200px; float:left; border:1px solid #ff0000; position:relative;'>
   <span style='position:absolute; bottom:0px;'>A Text</span>
</div>

效果是在FF中我只是得到垂直线(以折叠方式的div)并且文本被写在它旁边。如何阻止div折叠但宽度适合文本?

2 个答案:

答案 0 :(得分:89)

Flex解​​决方案

如果您想使用display: table-cell解决方案,那就完全没问了。但是,我们有一种更好的方法来使用display: flex;来完成相同的操作,而不是将其破解。 flex具有decent support

.wrap {
  height: 200px;
  width: 200px;
  border: 1px solid #aaa;
  margin: 10px;
  display: flex;
}

.wrap span {
  align-self: flex-end;
}
<div class="wrap">
  <span>Align me to the bottom</span>
</div>

在上面的示例中,我们首先将父元素设置为display: flex;,然后我们将align-self用于flex-end。这有助于您将项目推送到flex父项的末尾。


旧解决方案(如果您不愿意使用flex,则有效)

如果您想将文字对齐到底部,则不必为此编写这么多属性,使用display: table-cell; vertical-align: bottom;就足够了

div {
  display: table-cell;
  vertical-align: bottom;
  border: 1px solid #f00;
  height: 100px;
  width: 100px;
}
<div>Hello</div>

(Or JSFiddle)

答案 1 :(得分:38)

您现在可以使用Flexbox justify-content: flex-end立即执行此操作:

div {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
  width: 150px;
  height: 150px;
  border: solid 1px red;
}
  
<div>
  Something to align
</div>

Consult your Caniuse了解Flexbox是否适合您。