代码之家  ›  专栏  ›  技术社区  ›  Jase Whatson

浮动时出现奇怪的div边界问题

  •  3
  • Jase Whatson  · 技术社区  · 17 年前

    我不希望div'z'和'q'越过右边的“蓝色div边界”。

    <div style='margin: 5px;width: 653px;border: blue 1px solid;float: left;'>
        <div style='margin: 0px; margin-bottom: 5px;width: 100%;border: red 1px solid;/*float: left;*/'>z</div>
        <div style='overflow: hidden;margin: 0px; margin-bottom: 5px;width: 100%;border: red 0px solid;/*float: left;*/'>
                <div style='margin: 0px; margin-bottom: 0px;width: 300px;border: red 1px solid;float: left;'>y</div>
                <div style='margin: 0px; margin-bottom: 0px;width: 300px;border: red 1px solid;float: right;'>x</div>
        </div>
         <div style='margin: 0px; margin-bottom: 5px;width: 100%;border: red 1px solid;/*float: left;*/'>q</div>
    

    3 回复  |  直到 8 年前
        1
  •  1
  •   Laurent Villeneuve    17 年前

    你是通过什么浏览器制作截图的?如果是IE,则长方体模型存在问题,导致在计算100%宽度时忽略边框宽度。

    您可以创建一个不可见的容器来调整内部div的大小,或者将内部div的大小调整为container.width-2。

    宽度:100%;

        2
  •  0
  •   Fenton    17 年前

    红色边框实际上位于图像中蓝色边框的内部-但我假设您希望增加z和q容器上的边距。。。

    我已经冒昧地用双引号将属性括起来,并更正了重新声明的样式规则(边距和边距底部)-但对行格式表示歉意-在我去掉换行符之前,我似乎无法将其全部保留在本论坛的代码块中:

    <div style="margin: 5px;width: 653px;border: blue 1px solid;float: left;"><div style="margin: 5px;width: 100%;border: red 1px solid;">z</div><div style="overflow: hidden;margin: 5px;width: 100%;border: red 0px solid;"><div style="margin: 0px;width: 300px;border: red 1px solid;float: left;">y</div><div style="margin: 0px;width: 300px;border: red 1px solid;float: right;">x</div></div><div style="margin: 5px;width: 100%;border: red 1px solid;">q</div>
    
        3
  •  0
  •   Mayank Gupta    11 年前

    你们可以参考我创建的例子。我为此类问题创建了一个工作小提琴。

    http://jsfiddle.net/mayankipsa/e7snvdag/

    .floatLeft { float: left;}
    .floatRight { float: right;}
    .clearBOTH { clear: both; }
    
    .redBorder{border:1px solid red;}
    .blueBorder{border:1px solid blue;}
    
    .x,.y{width:49%;margin:1px; }
    .z{margin:1px;}
    .q{margin:1px;}
    <div style='margin: 5px;width: 653px;border: blue 1px solid;float: left;'>
        <div style='margin: 0px; margin-bottom: 5px;width: 100%;border: red 1px solid;/*float: left;*/'>z</div>
        <div style='overflow: hidden;margin: 0px; margin-bottom: 5px;width: 100%;border: red 0px solid;/*float: left;*/'>
                <div style='margin: 0px; margin-bottom: 0px;width: 300px;border: red 1px solid;float: left;'>y</div>
                <div style='margin: 0px; margin-bottom: 0px;width: 300px;border: red 1px solid;float: right;'>x</div>
        </div>
         <div style='margin: 0px; margin-bottom: 5px;width: 100%;border: red 1px solid;/*float: left;*/'>q</div>
    </div>
    
    <div class="clearBOTH"></div>
    <div class="blueBorder" style="margin-top:50px;">
        <div class="z redBorder">z</div>
        <div class="redBorder">
            <div class="y floatLeft redBorder">y</div>
            <div class="x floatRight redBorder">x</div>
            <div class="clearBOTH"></div>
        </div>
        <div  class="q redBorder">q</div>
    </div>