左,中,右对齐同一行底部的div

时间:2011-02-16 00:14:53

标签: css html alignment center vertical-alignment

我想在同一行显示三个div。三者中的每一个都具有不同的宽度和高度,并且它们不是直的文本。我想左对齐一个(一直到左边),右对齐另一个(一直到右边),并居中第三个(在包含div的中间,在这种情况下整个页面) )。

另外,我希望三个div垂直对齐到包含div的底部。我已经将它们垂直对齐到包含div的顶部。

处理此问题的最佳方法是什么?

6 个答案:

答案 0 :(得分:20)

通过将容器div设置为position:relative并将子div设置为position:absolute,您可以将div绝对定位在容器的范围内。

这样可以轻松实现,因为您可以使用bottom:0px垂直对齐容器底部,然后使用左/右样式沿水平轴定位。

我设置了一个有效的jsFiddle:http://jsfiddle.net/Damien_at_SF/KM7sQ/5/,代码如下:

HTML:

<div id="container">
    <div id="left">left</div>
    <div id="center">center</div>
    <div id="right">right</div>    
</div>

CSS:

#container {
    position:relative;
    height:400px;
    width:100%;
    border:thick solid black;
}
#container div {
    background:grey;
    width:200px;
}
#left {
    position:absolute;
    left:0px;
    bottom:0px;
}
#center {
    position:absolute;
    left:50%;
    margin-left:-100px;
    bottom:0px;
}
#right {
    position:absolute;
    right:0px;
    bottom:0px;
}

注意:对于“center”div,margin-left = 1/2 div的宽度:)

希望有所帮助:)

答案 1 :(得分:4)

我的技术类似于@Damien-at-SF:

我试图严格证明您要求的所有要求。

Live Demo

<强> HTML:

<div id="container">

    <div id="left"></div>
    <div id="mid"></div>
    <div id="right"></div>

</div>

<强> CSS:

#container {
    position: relative;
    height: 400px;
    width: 80%;
    min-width: 400px;
    margin: 0 auto;

    background: #ccc
}
#left, #right, #mid {
    position: absolute;
    bottom: 0;
}
#left {
    left: 0;
    width: 80px;
    height: 200px;

    background: red
}
#right {
    right: 0;
    width: 120px;
    height: 170px;

    background: blue
}

#mid {
    left:50%;

    margin-left: -80px;
    width: 160px;
    height: 300px;

    background: #f39
}

答案 2 :(得分:2)

为了使你的中心div有弹性,你可以做类似的事情:

<div style="display:table; width:500px;">
  <div style="display:table-row;">
    <div style="display:table-cell; width:50px;"></div>
    <div style="display:table-cell;"></div>
    <div style="display:table-cell; width:50px;"></div>
  </div>
</div>

答案 3 :(得分:1)

第一个答案的进一步增强:

在“center”div CSS中,您需要添加:

text-align:center;

在“右”div CSS中,您需要添加:

text-align:right;

...完美实现左/中/右对齐。

答案 4 :(得分:0)

在包含div上设置position: relative,在3个div上设置position: relative,并将3个div的bottom属性设置为0

bottom: 0

答案 5 :(得分:0)

您可以使用align-items: flex-end使弹性框项目在底部垂直对齐。

.container {
  display: flex;
  height: 300px;
  min-width: 400px;
  background-color: #61a0f8;
  justify-content: space-between;
  align-items: flex-end;
}

.item {
  width: 100px;
  height: 120px;
  background-color: #f08bc3;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  font-size: 2rem;
}

.flex-2 {
  width: 140px;
  height: 240px;
}
<div class="container">
  <div class="item">1</div>
  <div class="item flex-2">2</div>
  <div class="item">3</div>
</div>