【问题标题】:How to vertically align floating divs to the bottom?如何将浮动div垂直对齐到底部?
【发布时间】:2011-09-01 06:22:45
【问题描述】:

因为示例规则:http://jsfiddle.net/rudiedirkx/wgue7/

如何将条形图放在底部而不是顶部?现在它们粘在容器的顶部 (#bars) 但我希望它们粘在底部。

如你所见,我不知道最高条的高度,所以也不知道容器的高度。

这些 q+a 没有帮助:Vertically align floating divsVertically align floating DIVs

应该很简单吧?如果它有帮助:它只需要在体面的浏览器中工作。

附言。条的数量是可变的(不在示例中),它们的高度是可变的。只有它们的宽度是静态的。定位 absolute 将无济于事,因为容器 div 没有测量值。

【问题讨论】:

  • 他们不是已经对齐到底部了吗?或者你想让他们就在边境?似乎它们已经与垂直对齐底部对齐:底部;
  • 是的,robx 说的。如果您只想让条形图触及底部边框,您只需删除padding: 5px;

标签: css css-float vertical-alignment


【解决方案1】:

This will do the trick:

#bars {
    display: table-cell;
    border: solid 1px black;
}
#bars > div {
    display: inline-block;
    vertical-align: bottom;
    width: 5px;
    background-color: #999;
    margin-left: 2px;
}
#bars > div:first-child {
    margin-left: 0;
}

它在父 div 上使用display: table-cell;,默认情况下应用了vertical-align: baseline;。这改变了对子 div 的float: left; 的需求,并允许我们使用display: inline-block;。这也消除了对 CSS 明确修复的需要。

编辑 - 根据 @thirtydot 的 cmets,将 vertical-align: bottom; 添加到子 div 会消除底部的间隙。

因此,我更改了上面的 CSS 和 jsFiddle。我保留了display: table-cell;,以便父 div 用 0 填充包裹子 div,看起来又漂亮又时髦!

【讨论】:

  • 我已经更新了答案和 jsFiddle,但是如果您只是将填充更改为 padding: 5px 5px 0;,这将解决问题。
  • 哦,我删除了vertical-align: bottom;,因为vertical-align: baseline 是默认值。
  • 仅供参考,如果你需要支持 IE7,它不支持display:table-cell 虽然我认为这是最好的答案。
  • @Paul - 他确实说过这仅适用于现代浏览器,这就是我使用我所做的事情的原因。 =D
  • @Scott:要移除底部的“填充”(实际上不是padding),您需要vertical-align: bottom。此外,如果您在divs 上使用display: inline-block,则不需要 display: table-cell。我还添加了使inline-block 在IE6/7 中工作的技巧。见:jsfiddle.net/7BBqC/3 - 我意识到我可以用所有这些细节发布我自己对这个问题的答案,但我是一个好人 :)
【解决方案2】:

弹性盒子! Flexbox 是最好的。

示例:http://jsfiddle.net/rudiedirkx/7FGKN/

Flexbox 让这变得非常简单(别忘了正确):

#container {
  display: flex; /* or inline-flex */
  flex-flow: row nowrap; /* is default: columns along the main-axis (row) and no wrapping to next lines */
  align-items: flex-end; /* bottom */
}
#container > div {
  /* margin etc here, but nothing layoutish */
}

就是这样两行 CSS:display: flexalign-items: flex-end

【讨论】:

  • Flexbox 太酷了,大部分时间你甚至不必处理浮动,因为你不能浮动弹性项目! (你仍然可以浮动一个 flex 容器,或者任何在 flex 项目中的东西,这很好,并且不会让 flexbox 变得不那么棒。)
  • +1 W3CMozilla Developer NetworkCSS Tricks 是了解 flexbox 的绝佳资源。值得注意的是,目前它似乎只是 WC3 推荐。任何人都可以正式确认或否认吗?也可以在这些链接上找到当前的浏览器支持。
  • 浏览器支持是最重要的,现在它实际上非常好。 IE10 实现了旧的方式(但大部分是可行的)。 IE11 是酷俱乐部的一部分。 Firefox still doesn't do wrap though.
  • 这是什么魔法?
猜你喜欢
  • 1970-01-01
  • 2010-11-04
  • 2011-05-31
  • 2016-02-23
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
相关资源
最近更新 更多