经过上边的学习,可以看出:元素浮动之前,也就是在标准流中,是竖向排列的,而浮动之后可以理解为横向排列。

       清除浮动可以理解为打破横向排列。

       清除浮动的关键字是clear,官方定义如下:

 

       语法:

       clear : none | left | right | both

       取值:

       none  :  默认值。允许两边都可以有浮动对象

       left   :  不允许左边有浮动对象

       right  :  不允许右边有浮动对象

       both  :  不允许有浮动对象

 

       定义非常容易理解,但是读者实际使用时可能会发现不是这么回事。

       定义没有错,只不过它描述的太模糊,让我们不知所措。

       根据上边的基础,假如页面中只有两个元素div1、div2,它们都是左浮动,场景如下:

       CSS浮动(float,clear)通俗讲解(二)_前端

         此时div1、div2都浮动,根据规则,div2会跟随在div1后边,但我们仍然希望div2能排列在div1下边,就像div1没有浮动,div2左浮动那样。

        这时候就要用到清除浮动(clear),如果单纯根据官方定义,读者可能会尝试这样写:在div1的CSS样式中添加clear:right;,理解为不允许div1的右边有浮动元素,由于div2是浮动元素,因此会自动下移一行来满足规则。

        其实这种理解是不正确的,这样做没有任何效果。看小编定论:

        对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。

        怎么理解呢?就拿上边的例子来说,我们是想让div2移动,但我们却是在div1元素的CSS样式中使用了清除浮动,试图通过清除div1右边的浮动元素(clear:right;)来强迫div2下移,这是不可行的,因为这个清除浮动是在div1中调用的,它只能影响div1,不能影响div2。

        根据小编定论,要想让div2下移,就必须在div2的CSS样式中使用浮动。本例中div2的左边有浮动元素div1,因此只要在div2的CSS样式中使用clear:left;来指定div2元素左边不允许出现浮动元素,这样div2就被迫下移一行。

     CSS浮动(float,clear)通俗讲解(二)_CSS_02

          那么假如页面中只有两个元素div1、div2,它们都是右浮动呢?读者此时应该已经能自己推测场景,如下:

      CSS浮动(float,clear)通俗讲解(二)_HTML_03

          此时如果要让div2下移到div1下边,要如何做呢?

        同样根据小编定论,我们希望移动的是div2,就必须在div2的CSS样式中调用浮动,因为浮动只能影响调用它的元素。

        可以看出div2的右边有一个浮动元素div1,那么我们可以在div2的CSS样式中使用clear:right;来指定div2的右边不允许出现浮动元素,这样div2就被迫下移一行,排到div1下边。

 CSS浮动(float,clear)通俗讲解(二)_前端_04     

           至此,读者已经掌握了CSS+DIV浮动定位基本原理,足以应付常见的布局。

         其实,万变不离其宗,只要读者用心体会,再复杂的布局都可以通过小编总结的规律搞定。

      写在后面的话: 

         必须严正声明,CSS这块极其混乱,尤其是浏览器的兼容性问题。

         其实真不想写这么长的文章,可为了读者能够理解,总是不由自主的想多举些例子。

         为了减轻读者心理压力,本文没有任何CSS、HTML代码,因为现在很多教程上来就是一大堆CSS代码,看到就烦,别说细读了。

         最后预祝读者阅读愉快,开心掌握知识。

想要学习更多WEB前端开发知识,欢迎加入WEB开发交流群-8(群号:143046757)获取更多资料~