问答详情
源自:2-4 浮动 float

清除左侧浮动?

既然浮动元素脱离于普通文档流存在

那么就比如视频中box3与box1  box2重叠的时候

如何识别出box1  box2 在box3左侧?

如果清楚除浮动的意思是浏览器解释为该侧不存在浮动元素

弱弱的问一句此时是把浮动元素同普通文档流同样对待的意思吗?

提问者:宿雪 2016-10-22 10:54

个回答

  • yxnne
    2016-12-29 11:52:24
    已采纳

    尽管问题提出好久了,还是说下我的一点浅见吧,开始我也想着是浏览器会找出某元素左边的元素,然后处理下。不过后来自己试了下,觉得这个clear:left ,在此处并不是识别出位于某元素左侧的元素,并清除浮动效果的意思。

    我的理解是,某元素设置clear:left属性,则对于该元素而言,此前设置了 float:left  的元素都可以视为“普通文档流”层,这样的话新的样式就在之前设置了float:left的元素下一行开始了。那么clear:left = “忽略之前左侧浮动元素“实现的效果,把他们视作普通文档流实现的。

    貌似样式和文档是是分离的,举个例子,题主截图例子中,假设div3中有文字(文字们本来位于div的左上角),如果div3不设置clear:left ,那么样式会像上图一样显示(重叠),但是div3中的文字则不然,文字此时不会在div的左上角。这时,当设置了所谓“忽略左侧浮动元素“效果clear:left 后,把之前元素的效果都当做是普通文档流的效果,这样样式会另起一行,而文字也会显示正常了。

    同理,为什么clear属性还有一个right,一样的,也不是根据位置来分的,那就是”忽略右侧浮动元素效果”,即,对于设置clear:"rught”的当前元素而言,所有的右侧浮动效果(float:right),都视作普通文档流实现,所谓忽略浮动。


  • 慕斯卡8449275
    2016-10-22 21:28:02

    是把浮动元素看做是普通文档流