2012-12-24 50 views
1

我有一个非常令人沮丧的情况与边距..我有一个div在我的标记漂浮在右边的顶部。段落边缘影响它旁边的浮动块

.grey{ 
    float:right; 
    width:200px; 
} 

我需要将一些样式(背景和边距)应用于第一段后。

.blue{ 
    background-color: blue; 
    margin: 10px; 
    overflow:hidden; 
} 

现在我必须作出段落“溢出:隐藏”,这样的背景不浮动的DIV下方延伸,但我有2个奇怪的问题。

  1. 保证金似乎并不适用于接触浮动的段落一侧;

  2. 幅度似乎适用于它旁边的浮动元素..

这里有一个小提琴。 http://jsfiddle.net/whiteatom/Nkfzg/6/

谁能告诉我如何获得“蓝色”元素和浮动之间的空白空间?谁能告诉我如何让我的浮动元素没有这些幻影边距?

干杯,

whiteatom

+0

只是为了帮助你了解这是怎么回事,在div出现接收上边距,因为它实际上是身体是越来越边缘,与你给第一款的保证金崩溃的结果。 – BoltClock

+0

我不这么认为。如果我把第一段的边距从浮动的和蓝色的div上都去掉了。我同意它似乎适用于身体......但如果我从灰色的div上取下浮标,它会进入右上角 - 无边距。 – whiteatom

+0

发生这种情况的原因是,当您停止浮动div时,该段被推下,因为它位于HTML中的div之后。当发生这种情况时,边距不再与边距相邻,因此主体和边缘都不会出现边缘坍塌。相反,p被推离div。 – BoltClock

回答

1

你需要一个左边距,以便从该段适用于浮动元素空间它扔掉:

.grey { 
    float: right; 
    width: 200px; 
    margin-left: 10px; 
} 

如前所述,边缘塌陷使你的段落的上边距影响页面的身体,而不是。这会导致它将段落和浮动元素向下推。

从浮动元素中删除上边距,你有两个选择(只选一项):

body { 
    float: left; 
} 

这将导致保证金:

  • 浮体取消保证金崩溃只影响该段落。 Updated fiddle

  • 施加负上边距您浮动元素:

    .grey { 
        float: right; 
        width: 200px; 
        margin-left: 10px; 
        margin-top: -10px; 
    } 
    

    在这里,你移浮动元素最多对抗保证金崩溃,它仍然有效。Updated fiddle

0

如果.grey格总是将是200像素宽,只是改变了.blue div的保证金是width + 10px。像这样:

.blue { 
    border: 1px solid red; 
    background-color: blue; 
    margin: 10px 210px 10px 10px; 
}; 

这是updated fiddle

+0

我认为这不会起作用。如果蓝色段落在页面的更远处,我希望它延伸到页边距。灰色的div只是一个功能框,而不是一列。看起来这应该是一件容易解决的事情,但它不是...... – whiteatom