CSS中的浮动与清除

    在CSS中浮动多用于div的浮动,这与今天的网页布局多采用div+css而不是传统的表格布局有很大的关系,我们这里不讨论那种布局更有优势,因为存在即合理,只能说各有特点。好了开始讲浮动吧。

    CSS中的浮动,用属性float控制,例如float:right;元素生成向右移动的块框;

    在了解浮动原则之前有必要先清楚几个概念:

    HTML文档中的元素可以分为两大类:行内元素和块级元素。
    1.行内元素不占据单独的空间,依附于块级元素,行内元素没有自己的区域。它同样是DOM树中的一个节点,在这一点上行内元素和块级元素是没有区别的。
    2.块级元素总是以块的形式表现出来,并且跟同级的兄弟块依次竖直排列,左右自动伸展,直到包含它的元素的边界,在水平方向不能并排。
    另一个是标准流,标准流指的是在不使用其他的与排列和定位相关的特殊CSS规则时,各种元素的排列规则。

1:下面看个在标准流下的块级元素的位置:

CSS代码:

    <style type="text/css">
        #dome1 {
            height: 100px;
            width: 300px;
            background: #0094ff;
        }

        #dome2 {
            height: 150px;
            width: 65px;
            background: #f00;
        }

        #dome3 {
            height: 200px;
            width: 250px;
            background: #ffd800;
        }

        #dome4 {
            height: 150px;
            width: 100px;
            background: #4800ff;
        }
    </style>

HTML代码:

<body>
    <div id="dome1">1</div>
    <div id="dome2">2</div>
    <div id="dome3">3</div>
    <div id="dome4">4</div>
</body>

其效果显示如下:

从器效果显示图来看,块级元素显示,是从上到下排布的,每一个元素占据一行;

2:看块1右浮动之后的效果图:

HTML中代码相同,值需要修改CSS样式,在其中加上float:right;如下:

        #dome1 {
            height: 100px;
            width: 300px;
            background: #0094ff;
            float:right;
        }

 

效果图如下:

因为块一被设置成向右浮动,所以块一就脱离标准流了,那么对于其它元素而言,它已经不存在了,所以后面的三个块级元素,按标准流来进行排列,所以块一浮动到右侧,块二被顶到第一行去,后面依次跟上。可能这时候有人会问了,要是第一个块级元素师向左浮动的呢,那这四个块级元素又该怎么排列,又遵循什么样的规则?

3:块一向左浮动:

其效果如上,是的,块2的上部有一些被块1覆盖了,为什么会出现这中情况捏,原因还是刚才讲到的,因为块1发生浮动,导致它已经脱离了标准流,这样就会导致其它的元素在排列的时候当它不存在一样,导致效果如图一样出现被覆盖情况;但如果块2元素中有内容的话,块2中的元素会被看到还是被覆盖呢?

4:块1发生左浮动,块2中的元素是否被覆盖?

在HTML中加入文字:代码如下:

<body>
    <div id="dome1">111111111</div>
    <div id="dome2">22222222</div>
    <div id="dome3">333333</div>
    <div id="dome4">444444</div>
</body>

效果图如下:

对,如你所见文字并没有被覆盖,那到底是什么原因导致的捏?这是因为,虽然块1已经脱离了标准流,导致其它的元素当它不存在一样,从而在排列的时候忽略其存在,而事实上也只是当它不存在而已,它还是存在的,它还是会在那里占据一定的空间,所以其文字不会被覆盖,而会在在占据的位置之后显示。
总结:浮动会导致元素脱离标准流,从而在其它元素排列的时候会当它不存在,但它又确实是存在的,会占据位置,这一点在元素中的内容在网页中的显示位置有明显的体现。

说完了浮动,再来说清除浮动;清除浮动,清除谁的浮动,指的是清除该元素的上一个元素,用属性clear来控制,有四个值,分别为none,left,right,both;比如:clear:left;这表示,我不允许在同一行中我的左边出现浮动元素,如果恰巧我的上一个元素就是设置的左浮动,那不好意思,还是得兑现我左边不能出现浮动元素的庄严宣告,那怎么办?就是算你狠,我不跟你斗,我走,我另起一行开始我的生活;以此类推。clear:right;表示同一行的右边不允许出现右浮动的元素;clear:both;就是左右两边都不可以;

1比如:块1右浮动,块2设置clear:right;

CSS代码如下:

        #dome1 {
            height: 100px;
            width: 300px;
            background: #0094ff;
            float:right;
        }

        #dome2 {
            height: 150px;
            width: 65px;
            background: #f00;
            clear:right;
        }

其效果图如下:

对,如你所见,它并没有像我们刚刚开始讲的那样,块2会顶到第一行去,为什么呢,因为块2已经说了,在同一行中我的右边不允许出现右浮动的情况,那只好自己退而求其次了,委屈自己,虽然你已不是标准流中的元素,我本该顶到第一行出的,但我还是没去。在下面另起一行开始新的生活。

 

 

   

 

CSS中的浮动与清除

相关文章:

你感兴趣的文章:

标签云: