71

我试图将我的文本与 Stack Overflow 中其他帖子和答案的 div 底部对齐,我学会了使用不同的 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折叠但宽度适合文本?

4

2 回答 2

146

柔性解决方案

如果您想采用该display: table-cell解决方案,那就太好了。但是,与其破解它,我们有一个更好的方法来完成同样的事情,使用display: flex;. flex是有不错支持的东西。

.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-selfto flex-end。这可以帮助您将项目推送到flex父项的末尾。


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

如果你想将文本对齐到底部,你不必为此写那么多属性,使用display: table-cell;withvertical-align: bottom;就足够了

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

(或JSFiddle)

于 2013-06-15T11:54:11.780 回答
50

您现在可以使用 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>

请咨询您的 Caniuse,了解 Flexbox 是否适合您。

于 2016-01-27T19:38:27.377 回答