【问题标题】:3 columns, middle one with flexible width3列,中间一列,宽度灵活
【发布时间】:2011-11-09 15:48:35
【问题描述】:

我想要一个包含三个相邻 div 的布局。侧 div 具有静态宽度(可能通过 javascript 更改),中心 div 填充剩余区域。当第一个 div 的大小发生变化时,它只影响中心的一个。它类似于由三列组成的表格(具有动态渲染)。

好的,但问题出在哪里。 问题是,如果我将左浮动 div 放入第一列,并在第二列和第三列中阻止 div,则阻止 div 的行为方式很奇怪。它们在第一列的浮动 div 下方的列中呈现。

一个例子。 在第一列和第二列中,我有浮动 div,第三列中有块 div。块 div 围绕浮动 div 的高度向下移动。中心列中的 Div 不会在其 y 位置移动,只是它具有 float left 属性。

我希望三个布局 div 中的每一个都相互独立。我不知道为什么第三列中的元素在前两列中浮动 div(带有 float 属性)。

代码:

<div style="margin: auto; display: table; width: 260px;">
        <div style="display: table-row;">
            <div style="display: table-cell; width: 100px;">

                <div style="float: left; width: 40px; height: 50px;">COL1</div> 

            </div>
            <div style="display: table-cell;">

                <div style="float: left; height: 50px;  width: 40px;">COL2</div>

            </div style="display: table-cell; width: 100px;">
            <div class="sideContainer">

                <div>COL3</div>

            </div>
        </div>
</div>

结果: result

如何解决。如何使所有布局 div(列)彼此独立。有什么想法吗?

【问题讨论】:

  • 您在关闭标签上有一个属性:&lt;/div style=...&gt;
  • 这是我的错误。关闭选项卡上的样式应该是 'class='sideContainer';这就是结果链接中呈现的内容
  • 但是,我想我明白它为什么会这样。因此,例如:中心布局 div 中的浮动 div 是其父级的第一个子级。因此,如果它具有浮动属性,但在他的左边没有任何东西可以浮动,它会浮动她的父级上一个兄弟姐妹(第一个布局 div)。为了解决这个问题,我需要在浮动 div 前面插入一些东西(即宽度等于 0 的 div)。或者如果我有两个浮动 div,第一个必须是 float: none 和 display: inline。

标签: css positioning css-float css-tables


【解决方案1】:

您可以通过将 col1 和 col3 以固定宽度向左和向右浮动来做到这一点。

然后给col2添加一个左右边距,等于col1和col3的宽度。

这为您提供了三列; col1 和 col3 具有固定宽度,而 col2 填充可用宽度:


(col2 的内容框为蓝色,其边距为黄色)

<div class='container'>
    <div class='right'>
        col3
    </div>
    <div class='left'>
        col1
    </div>
    <div class='middle'>
        col2
    </div>
</div>



.container {
    overflow: hidden;
}
.right {
    float: right;
    width: 100px;
}
.left {
    float: left;
    width: 100px;
}
.middle {
    margin: 0 100px;
}

在这里试试:http://jsfiddle.net/22YBU/

顺便说一句,如果您需要显示:表格,显示:表格行和显示:表格单元格,请使用表格;-)

【讨论】:

  • div的顺序很重要,不直观。
  • CSS 浮动不直观 :)
  • 此顺序也适用:左、右、中。重要的是浮动 div 位于非浮动中间 div 之前。
  • 边距确保 .middle 不会在 .left 和 .right 下方“换行”,以防容器不够大(如果这是您期望的行为)
  • 如果我们使用这个顺序,那么标签索引将不会按照直观的顺序(从左到右)。相反,顺序将是右、左、中。有没有办法解决这个问题?
猜你喜欢
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多