• html css布局之float浮动清除


    1、标准文档流下的div的显示特点:

    现有3个div,父级div css样式命名为:divmain,同级子div css样式分别命名为:div-left,div-right。

    当我们不使用div浮动的时候,正常文档流(normal document)情况下,代码及显示效果如下所示:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4 
     5     <meta charset="UTF-8">
     6     <title>css float学习</title>
     7     <style type="text/css">
     8     .divmain{
     9         margin-left: 30px;
    10         background-color: #FFA500;
    11         width:400px; 
    12         border: 1px solid #FF0000;
    13     }
    14     .div-left, .div-right{
    15         background-color: #FFF;
    16         width: 180px; 
    17         height: 100px;
    18         border: 1px solid #000;
    19     }
    20 
    21     </style>
    22 </head>
    23 <body>
    24 <!--HTML div测试-->
    25 <div class="divmain">
    26 <div class="div-left">div left浮动</div>
    27 <div class="div-right">div right浮动</div>
    28 </div>
    29 </body>
    30 </html>
    View Code

    由上图我们可以很明显的看到,父级div(divmain)可以包容两个子div(div-left,div-right),并按照正常标准文档流的特点,块级元素独行显示,并自上而下

    的显示在浏览器页面上。

    2、子div加入float浮动后的表现形式:

    现将子div(div-left,div-right),分别设置float:left,和float:right属性,然后来查看一下在浏览上的表现。

    代码及显示效果如下所示:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4 
     5     <meta charset="UTF-8">
     6     <title>css float学习</title>
     7     <style type="text/css">
     8     .divmain{
     9         margin-left: 30px;
    10         background-color: #FFA500;
    11         width:400px; 
    12         border: 1px solid #FF0000;
    13     }
    14     .div-left, .div-right{
    15         background-color: #FFF;
    16         width: 180px; 
    17         height: 100px;
    18         border: 1px solid #000;
    19     }
    20     .div-left{
    21         float: left;
    22     }
    23     .div-right{
    24         float: right;
    25     }
    26     </style>
    27 </head>
    28 <body>
    29 <!--HTML div测试-->
    30 <div class="divmain">
    31 <div class="div-left">div left浮动</div>
    32 <div class="div-right">div right浮动</div>
    33 </div>
    34 </body>
    35 </html>
    View Code

    由上图我们可以观察到,设置子div左右浮动后,原来的子div由原来的自上而下排列,变成在同行显示。导致父级div不能被撑开(在实际css布局中,父级div是不用设置高度的,高度是随内容增加自适应高度。此案例中,父级div并没有设置height高度)。那怎么样解决在子元素设置float浮动情况下,父级div才能正常的包容子div呢?下面就是我们要讲的重要的内容,清除浮动方法。

    3、清除浮动的方法和技巧:

    1、给父级div设置合适的高度

    我们可以根据子级div内容高度确认父级div的高度。在本案例中,子级div的内容高度为100px+2px上下边框。所以我们设置父级div的高度为102px;

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4 
     5     <meta charset="UTF-8">
     6     <title>css float学习</title>
     7     <style type="text/css">
     8     .divmain{
     9         margin-left: 30px;
    10         background-color: #FFA500;
    11         width:400px; 
    12         height: 102px;
    13         border: 1px solid #FF0000;
    14     }
    15     .div-left, .div-right{
    16         background-color: #FFF;
    17         width: 180px; 
    18         height: 100px;
    19         border: 1px solid #000;
    20     }
    21     .div-left{
    22         float: left;
    23     }
    24     .div-right{
    25         float: right;
    26     }
    27     </style>
    28 </head>
    29 <body>
    30 <!--HTML div测试-->
    31 <div class="divmain">
    32 <div class="div-left">div left浮动</div>
    33 <div class="div-right">div right浮动</div>
    34 </div>
    35 </body>
    36 </html>
    View Code

     

    2、通过clear:both

    我们在父级div中,增加一个div,并将其css样式命名为clear;并为这个div增添属性:clear:both;

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4 
     5     <meta charset="UTF-8">
     6     <title>css float学习</title>
     7     <style type="text/css">
     8     .divmain{
     9         margin-left: 30px;
    10         background-color: #FFA500;
    11         width:400px; 
    12         border: 1px solid #FF0000;
    13     }
    14     .div-left, .div-right{
    15         background-color: #FFF;
    16         width: 180px; 
    17         height: 100px;
    18         border: 1px solid #000;
    19     }
    20     .div-left{
    21         float: left;
    22     }
    23     .div-right{
    24         float: right;
    25     }
    26     .clear{
    27         clear: both;
    28     }
    29     </style>
    30 </head>
    31 <body>
    32 <!--HTML div测试-->
    33 <div class="divmain">
    34 <div class="div-left">div left浮动</div>
    35 <div class="div-right">div right浮动</div>
    36 <div class="clear"></div>
    37 </div>
    38 </body>
    39 </html>
    View Code

     3、父级div设置overflow:hidden

    在父级div中,加入样式:overflow:hidden,可以清除父级div使用float产生的浮动。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4 
     5     <meta charset="UTF-8">
     6     <title>css float学习</title>
     7     <style type="text/css">
     8     .divmain{
     9         margin-left: 30px;
    10         background-color: #FFA500;
    11         width:400px; 
    12         border: 1px solid #FF0000;
    13         overflow: hidden;
    14     }
    15     .div-left, .div-right{
    16         background-color: #FFF;
    17         width: 180px; 
    18         height: 100px;
    19         border: 1px solid #000;
    20     }
    21     .div-left{
    22         float: left;
    23     }
    24     .div-right{
    25         float: right;
    26     }
    27     </style>
    28 </head>
    29 <body>
    30 <!--HTML div测试-->
    31 <div class="divmain">
    32 <div class="div-left">div left浮动</div>
    33 <div class="div-right">div right浮动</div>
    34 </div>
    35 </body>
    36 </html>
    View Code
  • 相关阅读:
    与MS Project相关的两个项目
    最后的报告bug
    oo第二阶段的总结
    第一阶段的反思和改变
    面向对象设计与构造第四次课程总结
    面向对象设计与构造第三次课程总结
    面向对象设计与构造第一次课程总结
    OO游记之六月篇
    OO游记之五月篇
    OO游记之四月篇
  • 原文地址:https://www.cnblogs.com/niuwa/p/7140810.html
Copyright © 2020-2023  润新知