【问题标题】:Fluid width and fixed with columns with border in between流体宽度并固定在中间有边框的列
【发布时间】:2014-01-13 13:19:16
【问题描述】:

我有流动宽度的左列和固定宽度的右列。我需要在它们之间设置一个边界,即最高柱的高度。

这是我所拥有的简化布局:

.left {
    width: 100%;
    float: left;
}
.left-inner {
    margin-right: 275px;
    padding-right: 30px;
    border-right: 2px dotted #47718D;
}   
.right {
    float: left;
    padding-left: 30px;
    width: 275px;
    margin-left: -275px;
}
<div class="left">
    <div class="left-inner">
        Content
    </div>
</div>
<div class="right">
    Sidebar
</div>

这里有一个更详细的小提琴:http://jsfiddle.net/meaLh

如您所见,边框停止在左列内容停止的位置。两列的高度都是可变的,因此有时左列会比右列长。我怎样才能让它们相等,这样我才能让边界一直向下?

【问题讨论】:

  • 我不明白你期望你的布局是怎样的,你看到小提琴了吗?
  • 尝试浮动以在第一个孩子上使用 display:table/table-cell 和右边框
  • @Mr.Alien 我已经改写了最后一段

标签: html css layout jsfiddle


【解决方案1】:
* {
    box-sizing: border-box;
}
.wrapper {
    width: 100%;
    max-width: 1260px;
}
.left {
    width: 100%;
    float: left;
}
.left-inner {
    margin-right: 275px;
    padding-right: 30px;
}
.right {
    float: left;
    padding-left: 30px;
    width: 275px;
    margin-left: -275px;
    border-left: 2px dotted #47718D;
}

【讨论】:

  • 问题是有时左列会比右列长,有时相反,因为它们包含动态内容。
【解决方案2】:

边框在左列内容停止的地方停止,因为边框属性应用于左列。类似地,应用于右列的边框将在右列内容停止的地方停止。现在如果你想要边框要低于内容,您可以在列底部使用一些填充。您也可以在左右列之间使用宽度非常小的第三列,并为其应用最小高度和边框。

【讨论】:

  • 这些列具有动态内容,因此有时左侧较长,有时右侧较长。这些解决方案只有在我知道确切高度的情况下才有效,对吗?