我正在修改我的其中一个页面的当前构建,其中有X个盒子,每个盒子中的内容各不相同,有些浮动在左边,有些浮动在右边,有些填充整个列空间。当前完成的方式是这样的:

的HTML

<div class="doubleColumn">
    <div class="contentBox"></div>
    <div class="contentBox"></div>

    <div class="singleColumn left">
        <div class="contentBox"></div>
    </div>

    <div class="singleColumn right">
        <div class="contentBox"></div>
    </div>
</div>


的CSS

.doubleColumn {
    float: left;
    width: 100%;
}

.singleColumn {
    width: 49%;
}

.contentBox {
    border: 1px solid RGB(0, 0, 0);
    box-sizing: border-box;
        -moz-box-sizing: border-box;
    margin-bottom: 20px;
    padding: 10px;
    width: 100%;
}

.left {
    float: left;
}

.right {
    float: right;
}


对于当前的解决方案,由于布局完美无缺,因此没有问题,如果我想在左右两列的下方添加另外2个较宽的内容框,我只需添加它们,然后在其下方的左列中再添加2个即可。当我尝试分配变量来确定哪个盒子在哪里时,问题就来了,因为我正在尝试制作它,因此我们可以将每个盒子调整为顶部,底部或中间,或者我们希望将其放置在其他任何位置,并且还可以调整它是位于左侧,右侧还是填充整个框。我得到了一个“半工作”的解决方案,在该解决方案中,我使用进行了检查,如果盒子的位置等于1,则将填充空间;如果盒子的位置等于2,则向左浮动;如果等于3,则向右浮动。我将在下面再次演示:

的HTML

<cfquery datasource="datasource" name="boxes">
    Select *
    From boxes
    Order by box_order
</cfquery>

<div class="doubleColumn">
    <cfoutput query="boxes">
        <cfif box_position eq 1>
            <div class="contentBox"></div>
        <cfelseif box_position eq 2>
            <div style="clear: left; float: left; width: 49%;">
                <div class="contentBox"></div>
            </div>
        <cfelseif box_position eq 3>
            <div style="clear: right; float: right; width: 49%;">
                <div class="contentBox"></div>
            </div>
        </cfif>
    </cfoutput>
</div>


但是,如果我连续有两个漂浮在左边,那么一个漂浮在右边的漂浮(就像那样)会漂浮在左边第二个而不是第一个旁边,因为使用了clear,但是如果我不使用clear的话那么第二个左边将与第一个左边并排放置。我被困住了,不知道如何解决这个问题。

最佳答案

由于箱子在这种情况下可能具有不同的高度,因此浮动可能非常棘手。我曾经为我的网站使用过类似的设计,并且不得不提出一些技巧。几件事可能解决您的问题:

1)每当一行中有2个框(左,右,左,右)时,都将有一个div容器。这样,您将隔离它们,第三个框将不受其影响。确保该框已溢出:隐藏。实际上,我会把overflow:隐藏在所有这些对象上,这应该可以解决您可能遇到的利润问题。

<div class="contentBox"></div>
<div class="container">
    <div class="singleColumn left"></div>
    <div class="singleColumn left"></div>
</div>
<div class="singleColumn right"></div>


http://jsfiddle.net/uHVKg/如果您想玩它

2)最好让所有框都向左浮动,除非您需要以下情形:
双柱
单权
双柱

但是然后您将在左侧有一个孔。

3)另一个解决方案(通常不切实际,但是可以在少数情况下使用)是o指定盒子的高度。但是,如果您拥有动态内容,那就别管它了。

关于html - float div的向左或向右,取决于变量WITHOUT列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17695513/

10-13 01:54