将div对齐到容器的底部

pst*_*ton 38 css

我认为这很简单,我需要将内部div(绿色和蓝色)对齐到容器的底部(红色).我希望不要使用绝对定位,我需要它是ie6,7,8 ff chrome safari等兼容.

<div style="border:1px solid red;">
    <div style="border:1px solid green; width:20px; height:20px; float:left;"></div>
    <div style="border:1px solid blue; width:20px; height:30px; float:left;"></div>
    <div style="clear:both;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试过使用vertical-align但找不到简单的解决方案.

谢谢你的帮助,p.

编辑这里是我对abs pos解决方案的尝试:

<div style="border:1px solid red; position:relative;">
    <div style="border:1px solid green; width:20px; height:20px; float:left; position:absolute; bottom:0px;"></div>
    <div style="border:1px solid blue; width:20px; height:30px; float:left; position:absolute; bottom:0px;"></div>
    <div style="clear:both;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

Zoi*_*erg 65

你为什么不能使用绝对定位?垂直对齐不起作用(表除外).让你的容器的位置:相对.然后使用bottom绝对定位内部div:0; 应该像魅力一样工作.

编辑zoidberg(我将更新答案)

<div style="position:relative; border: 1px solid red;width: 40px; height: 40px;">
   <div style="border:1px solid green;position: absolute; bottom: 0; left: 0; width: 20px; height: 20px;"></div>
   <div style="border:1px solid blue;position: absolute; bottom: 0; left: 20px; width: 20px height: 20px;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)


rds*_*rds 20

现代的方法是使用flexbox,添加align-items: flex-end;容器.

有了这个内容:

<div class="Container">
  <div>one</div>
  <div>two</div>
</div>
Run Code Online (Sandbox Code Playgroud)

使用这种风格:

.Container {
  display: flex;
  align-items: flex-end;
}
Run Code Online (Sandbox Code Playgroud)

https://codepen.io/rds/pen/gGMBbg

  • 对我来说,它使用 `flex-direction:column; justify-content:space-between;`. (3认同)

Mor*_*ode 7

我解决这个问题的方法是使用 flexbox。通过使用 flexbox 来布局容器 div 的内容,您可以让 flexbox 自动将可用空间分配给您想要“粘在底部”的项目上方的项目。

例如,假设这是您的容器 div,其中包含一些其他块元素,并且蓝色框(向下的第三个)是一个段落,而紫色框(最后一个)是您想要“粘在底部”的那个”。

在此处输入图片说明

通过使用 flexbox 设置此布局,您可以flex-grow: 1;仅在段落(蓝色框)上进行设置,如果它是唯一的flex-grow: 1;,则将分配所有剩余空间,将其后面的元素推到底部像这样的容器:

在此处输入图片说明

(为糟糕的、快速和肮脏的图形道歉)

  • 同样的情况也适用于应用于最后一个元素的“margin-top: auto;”。 (3认同)
  • 不要忘记设置 flex-direction: column; 对于容器,因为它默认为 row,它将尝试水平挤压彼此相邻的元素。 (2认同)

ind*_*two 5

我来这里寻找,忘记了我已经知道这个问题的答案 - 而且它非常简单:display: flexmargin-top: auto

您需要做的就是为您的容器指定 ,display并将flex您想要在底部放置的项目的上边距指定为auto

.container {
  display: flex;
}

.box {
  margin-top: auto;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container" style="border:1px solid red; height: 150px;">
    <div class="box" style="border:1px solid green; width:20px; height:20px;"></div>
    <div class="box" style="border:1px solid blue; width:20px; height:30px;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

也不需要漂浮物或清除物。