如何将另一个 div 内的 2 个 div 对齐到底部和左/右

Posted

技术标签:

【中文标题】如何将另一个 div 内的 2 个 div 对齐到底部和左/右【英文标题】:How can I align 2 divs inside another div to the bottom and to the left/right 【发布时间】:2017-11-18 17:38:58 【问题描述】:

我有这个代码

html

  <div class="head">
    <div class="menu">
    </div>
    <div class="search">
    </div>
  </div>

CSS

.head 
    height:110px;
    position:relative;

.menu 
    float:left;
    position:absolute;
    bottom:0px;

.search 
    float:right;
    position:absolute;
    bottom:0px;

我要做的是将div "menu" 放在div "head" 的左下角,将div "search" 放在div "head" 的右下角。

当我使用 "menu""head" 的位置和底部值时,它会完美地对齐菜单,但是当我尝试使用 "search" 做同样的事情时,它会将它扔到 "menu" 的顶部偏移一点。

这是一个图片示例 https://i.stack.imgur.com/KBUxw.png (“菜单” div 正确对齐,但“搜索”向左对齐,“菜单”顶部稍高)

去掉 position 和 bottom 值,只使用 float 将它们各自的边对齐,彼此内联,但不会将它们放在父 div 的底部。

我已经让它们与两侧对齐,但“搜索”div 仍然高于“菜单”(而不是在底部)。

这可能是因为它有一个带有输入搜索字段的表单。

编辑1

:我发现问题在于我实际上需要将搜索框与“搜索”的底部对齐。我尝试将此添加到 .searchbox

.searchbox 
  vertical-align:bottom;

但这不起作用,bottom:0px; 也不起作用。

编辑2

:我找到了解决方案,因为我发现了问题实际上是什么。我不得不将此代码添加到分配给输入框的类中

position: absolute;
right:    0;
bottom:   0;

现在它运行良好。除了框外,“搜索”中没有任何其他内容,因此对齐 div“搜索”并不是什么大问题,因为现在输入框与“头部”对齐。谢谢大家!

【问题讨论】:

【参考方案1】:

我试过这样做,它似乎在 Chrome 和 Firefox 中对我有用。此外,您的倒数第二个关闭 div 需要修复。

Codepen:https://codepen.io/jhhboyle/pen/BZQVvO

链接到对底部/右侧/左侧样式有帮助的另一个线程: Put text at bottom of div

HTML:

<div class="head">
    <div class="menu">
      Content
    </div>
    <div class="search">
      COntent
    </div>
</div>

CSS:

.head 
    height:110px;
    position:relative;
    background-color:green;

.menu 
    font-size:18px;
    position:absolute;
    bottom:0px;
    background-color:red;

.search 
    position:absolute;
    bottom:0px;
    right:0px;
    background-color:blue;

【讨论】:

我会修复标签,但这只是我在这里写的一个示例。我摆脱了 CSS 中的浮动,但搜索仍然不会移动到底部。我认为这可能是因为它有一个带有搜索框的表单。我将在原始帖子中添加详细信息。 这行得通,但我的搜索框有问题。我在第一篇文章中包含了详细信息。谢谢你的时间:)【参考方案2】:

A div with two div's align left and right bottom

在 CSS 文件中试试这个:

.head 
    height:110px;
    position:relative;

.menu 
    float:left;
    position:absolute;
    bottom:0px;

.search 
right:0px;
    float:right;
    position:absolute;
    bottom:0px;

【讨论】:

【参考方案3】:

您可以使用display: flex; 将 div 对齐到左下角和右下角。

.head 
  height: 110px;
  position: relative;
  display: flex;
  align-items: flex-end;
  border: 1px solid black;
  box-sizing: border-box;

.menu 
  font-size: 18px;


.menu, .search 
  flex: 0 0 50%;
  max-width: 50%;
  border: 1px solid red;
  box-sizing: border-box;
<div class="head">
  <div class="menu">
    Menu
  </div>
  <div class="search">
    Search
  </div>
</div>

【讨论】:

此代码有效,但我的“搜索”div 从底部偏移了大约 10 个像素。 “搜索”中有一个带有输入框的表单。里面没有按钮或中断。【参考方案4】:

使用 position:absolute; 创建另一个 div 并将两个子 div 放入其中。

css

.box 
  position: absolute;
  bottom: 0px;
  left: 0px;
  width: 100%;
  border-top:1px solid;

    .menu 
  font-size: 18px;
  float: left;
  margin-left: 10px;


.search 
  float: right;
  margin-right: 10px;

HTML

<div class="box">
   <div class="menu">
          hello
    </div>
    <div class="search">
          bye
     </div>
</div>

.head 
  height: 110px;
  border-radius: 2px 2px 0px 0px;
  position: relative;
  border: 1px solid;


.box 
  position: absolute;
  bottom: 0px;
  left: 0px;
  width: 100%;
  border-top:1px solid;


.menu 
  font-size: 18px;
  float: left;
  margin-left: 10px;


.search 
  float: right;
  margin-right: 10px;
<div class="head">
  <div class="box">
    <div class="menu">
      hello
    </div>
    <div class="search">
      bye
    </div>
  </div>
</div>

这是获得相同效果的另一种方法

2nd way to do this

3rd way to do this

【讨论】:

感谢分享,但这似乎很乱,添加了另一个 div。这是一种实用的做法还是草率? 这是一个实用的方法,因为你想要底部的两个 div 所以我为两者创建了一个父 div。 如果您不想执行上一个检查更新答案,我会尝试另一种解决方案。【参考方案5】:

添加这个:

.menuleft:0;

.searchright:0;

【讨论】:

这将“搜索” div 向右移动了,但它仍然没有与底部对齐。

以上是关于如何将另一个 div 内的 2 个 div 对齐到底部和左/右的主要内容,如果未能解决你的问题,请参考以下文章

如何垂直对齐具有动态高度的div内的图像?

将flex内的div向右对齐[重复]

如何对齐 3 个 div 左中右? [复制]

CSS 垂直对齐div内的div

DIV 容器内的 HTML 图像底部对齐

CSS - 使 div 水平对齐