zoukankan      html  css  js  c++  java
  • 关于如何清除浮动

    在了解如何清除浮动之前,我们先了解一下为什么我们要对元素进行浮动。我们都知道,div作为一个块标签来说,它是独占一行,从上而下排列的,这就是所谓的标准流。但是,在实际应用中,我们有时需要将两个或者多个div在一行显示,这时,我们就要对元素进行浮动已达到这个结果。浮动之后的元素已经脱离了文档流,漂浮于文档流之上。下面我们先来看一标准流是什么情况?

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title></title>
     6     </head>
     7     <style type="text/css">
     8         *{
     9             padding:0;
    10             margin:0;
    11         }
    12         .box{
    13             background-color:red;
    14             100%;
    15         }
    16         .div1{
    17             background-color:pink;
    18             300px;
    19             height:300px;
    20         }
    21         .div2{
    22             background-color:blue;
    23             300px;
    24             height:300px;
    25         }
    26     </style>
    27     <body>
    28         <div class="box">
    29             <div class="div1"></div>
    30             <div class="div2"></div>
    31         </div>
    32     </body>
    33 </html>

      上面所描述的就是标准流,当我们没有给父级也就是box高度时,它的高度是由里面的内容,也就是里面的div块的高度撑起来的,而两个div块也是按照上面我们所提到的独占一行,自上而下排列的下面我们再来看一下,当我们对div块进行浮动之后,会出现什么情况。此时我们只需要给div1和div2加浮动,

            .div1{
                background-color:pink;
                300px;
                height:300px;
                float:left; //添加浮动
            }
            .div2{
                background-color:blue;
                300px;
                height:300px;
                float:left;  //添加浮动
            }

      从上面结果我们可以看出,两个div块占据了同一行,而且,它们已经撑不起来父级(原来的黑色区域)的高度了。这就说明它们脱离了我们的文档流,已经不占据页面空间了。需要注意的是浮动只能是左右浮动。

        第二,事物总是双面的,浮动虽然给我们带来了一定的方便,但也给我们造成了一定的影响,浮动元素相当于给元素增加了一个inline-block(行内块标签),行元素浮动之后相当于给它转化成了块元素,此时可以给它设置宽度和高度;浮动元素脱离了我们的文档流,不再占据页面的高度;那么我们如何让才能消除浮动带来的影响呢,下面我们就来介绍一下清除浮动的几种常见的方法。

    第一种方法:
    给父级元素增加高度
    .box{
            100%;
            background-color:black;
            height:300px;  
    }
    第二种方法:当父级容器的高度不能确定时,我们可以给父级添加overflow:hidden;
    .box{
    	background-color:black;
    	100%;
    	overflow:hidden;
    }
    

    第三种方法:给浮动元素添加一个空的兄弟元素,然后给它添加clear:both;

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <style type="text/css">
            *{
                padding:0;
                margin:0;
            }
            .box{
                background-color:black;
                100%;
            }
            .div1{
                background-color:pink;
                300px;
                height:300px;
                float:left;
            }
            .div2{
                background-color:blue;
                300px;
                height:300px;
                float:left;
            }
            .div3{
                clear:both;
            }
        </style>
        <body>
            <div class="box">
                <div class="div1"></div>
                <div class="div2"></div>
                <div class="div3"></div>
            </div>
        </body>
    </html>

    第四种方法:利用伪类 :after  清除浮动。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <style type="text/css">
            *{
                padding:0;
                margin:0;
            }
            .box{
                background-color:black;
                width:100%;
            }
            .div1{
                background-color:pink;
                width:300px;
                height:300px;
                float:left;
            }
            .div2{
                background-color:blue;
                width:300px;
                height:300px;
                float:left;
            }
            .box:after{
                content:"";
                clear:both;
                display:block;
            }
        </style>
        <body>
            <div class="box">
                <div class="div1"></div>
                <div class="div2"></div>
            </div>
        </body>
    </html>

    再利用伪类清除浮动的时候我们需要注意几个问题,

      首先,我们是要给浮动元素的父级添加 :after

      其次,一定要有content属性,即使内容为空,

      最后,转化为块元素。display:block;

    清除浮动之后的效果如下:

    上述几种方法都是可以实现这种效果的哦!

  • 相关阅读:
    system函数
    如何:配置 ClickOnce 信任提示行为
    linux中shell变量$#,$@,$0,$1,$2的含义解释 (转载)
    C/C++中如何在main()函数之前执行一条语句?
    循环小数表示法
    struct/class等内存字节对齐问题详解
    malloc(0)
    C语言实现程序跳转到绝对地址0x100000处执行
    嵌入式程序设计中C/C++代码的优化
    backtrace和backtrace_symbols
  • 原文地址:https://www.cnblogs.com/yangxiaoying/p/6293615.html
Copyright © 2011-2022 走看看