zoukankan      html  css  js  c++  java
  • CSS float







    我们来看看CSS重要属性--float。


    以下内容分为如下小节:


    1:float属性

    2:float属性的特性    

      2.1:float之文字环绕效果

      2.2:float之父元素高度塌陷

    3:清除浮动的方法

      3.1:html法

      3.2:css伪元素法

    4:float去空格化

    5:float元素块状化

    6:float流体布局    

      6.1:单侧固定

      6.2:DOM与显示位置不同的单侧固定

      6.3:DOM与显示位置相同的单侧固定

      6.4:智能布局
        

    1:float属性


      float,顾名思义是漂浮,浮动的意思。但是在css中,它被理解成浮动。float有四个属性,即

    1 float:none;
    2 float:left;
    3 float:right;
    4 float:inherit;

    比较常用的两个属性值是左浮动和右浮动。在接下来的分享中,只会拿左浮动作为例子。其他浮动属性值与左浮动原理相同。


    2:float属性的特性


      2.1:float之文字环绕效果

    浮动的初衷就是为了文字环绕效果。

    看如下代码和demo。

    1 <div class="container">
    2     <div class="content"></div>
    3     <p>
    4 Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!
    5         </p>
    6     </div>    
     1 .container {
     2   width: 300px;
     3   height: 300px;
     4   border: 1px solid black;
     5 }
     6 .container .content {
     7   float: left;
     8   width: 150px;
     9   height: 150px;
    10   background-color: lightpink;
    11   margin: 5px;
    12 }

    content 元素设置了左浮动,使div元素脱离文档流,文字在其周围坏绕显示。


      2.2:float之父元素高度塌陷


    以div元素为例。div元素的高度会通过内容自动撑开。也就是说,内容有多少,高度就有多高。但是当内部元素设置了float属性之后,会是父元素高度塌陷。代码和实例如下。 

    1 <div class="container">
    2     <p>
    3 Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!
    4     </p>
    5 </div>


      如下,塌陷后css和demo。

    1 .container {
    2   width: 300px;
    3   border: 1px solid black;
    4 }
    5 .container p {
    6   float: left;
    7 }

    可以看出,子元素设置浮动前后发生的变化。

    3:清除浮动的方法

    那么问题来了,如果内部元素要设置浮动,那如何避免父元素高度塌陷的问题呢?


    有同学肯定会想,直接在父元素设置高度不就可以了吗?这在实际中是不行的。因为如果固定了父元素的高度,那如果之后想在其添加内容,不是又要去修改css代码了,特麻烦。
    那解决父元素高度塌陷有两种方法。
      3.1:父元素底部添加空div,然后在添加属性clear : both

      代码如下。

    1         <div class="container">
    2             <p>
    3             Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!
    4             </p>
    5             <div class="clearfix"></div>
    6         </div>
    
    
     1 .container {
     2   width: 300px;
     3   border: 1px solid black;
     4 }
     5 .container p {
     6   float: left;
     7 }
     8 .container .clearfix {
     9   overflow: hidden;
    10   *zoom: 1;
    11 }


      3.2:父元素设置伪类after。

    1         <div class="container">
    2             <p>
    3             Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!
    4             </p>
    5         </div>
     1 .container {
     2   width: 300px;
     3   border: 1px solid black;
     4   *zoom: 1;
     5 }
     6 .container p {
     7   float: left;
     8 }
     9 .container:after {
    10   content: "";
    11   display: table;
    12   clear: both;
    13 }


    4:float元素去空格化

    是什么意思呢?在平时的编码中,为了要符合HTML编码规范,都会为html标签添加缩进,达到美观的效果。可是缩进时就会产生空格,也就是&nbsp;。当给元素设置左浮动时,元素本身左浮动,剩余的空格会被挤到最后,也就是上文所说的文字环绕效果。但是,要记住一点,&nbsp;和回车敲下的空格的效果略有不同。


    5:float元素块状化

    在为内联元素设置浮动属性之后,display属性由inline变成block。并且可以为内联元素设置宽高。使用float加width属性可以实现一些简单的固定宽度的布局效果。

    6:float流体布局

      6.1:单侧固定,右侧自适应的布局。

    1         <div class="container">
    2             <div class="left">左浮动+固定宽度</div>
    3             <div class="right">右边自适应宽度+margin-left</div>
    4         </div>
     1 .container{
     2     max-width:90%;
     3     margin:0 auto;
     4 }
     5 
     6 .left{
     7     float:left;
     8     text-align:center;
     9     background-color: lightpink;
    10     width: 200px;
    11     height:300px;
    12 }
    13 
    14 .right{
    15     background-color: lightyellow;
    16     margin-left:200px;
    17     height:300px;
    18     padding-left:10px;
    19 }

     
      6.2:DOM与显示位置不同的单侧固定

    1         <div class="container">
    2             <div class="right">右浮动+固定宽度</div>
    3             <div class="left">左边自适应宽度+margin-right</div>
    4         </div>
     1 .container {
     2   max-width: 90%;
     3   margin: 0 auto;
     4 }
     5 .container .right {
     6   float: right;
     7   width: 200px;
     8   height: 200px;
     9   background-color: lightpink;
    10 }
    11 .container .left {
    12   background-color: lightyellow;
    13   margin-right: 200px;
    14   height: 300px;
    15   padding-left: 10px;
    16 }

     也就是说,html元素与显示在页面上的元素位置不相同。


      6.3:DOM与显示位置相同的单侧固定 

    1         <div class="container">
    2             <div class="left-content">
    3                 <!-- 左浮动+width100% -->
    4                 <div class="left">margin-right</div>
    5             </div>
    6             <div class="right">左浮动+固定宽度+margin-left负值</div>
    7         </div>
     1 .container {
     2   max-width: 90%;
     3   margin: 0 auto;
     4 }
     5 .container .right {
     6   float: left;
     7   width: 200px;
     8   height: 200px;
     9   background-color: lightpink;
    10   margin-left: -200px;
    11   height: 300px;
    12 }
    13 .container .left {
    14   background-color: lightyellow;
    15   margin-right: 200px;
    16   height: 300px;
    17   text-align: center;
    18 }


      6.4:智能布局


    所谓智能布局,就是两栏都不需要设置宽度,宽度随内容自适应。

     1         <div class="container">
     2             <div class="left">
     3                 float+margin-right+自适应宽度
     4             </div>
     5             <div class="right">
     6                 display:table-cell  ---IE8+;
     7                 display:inline-block   ---IE7+;
     8                 自适应宽度
     9             </div>
    10         </div>
     1 .container {
     2   max-width: 90%;
     3   margin: 0 auto;
     4 }
     5 .container .left {
     6   float: left;
     7   height: 300px;
     8   background-color: lightpink;
     9 }
    10 .container .right {
    11   display: table-cell;
    12   *display: inline-block;
    13   height: 300px;
    14   background-color: lightyellow;
    15 }




    总结以下:

    1:当一个元素设置float属性时,会使元素块状化。

    2:float属性的创造初衷就是为了文字环绕效果而生的。

    3:float元素会使父元素高度塌陷。

    4:float元素会除去换行带来的空格。

    5:使用float可以实现两栏自适应的布局。




    转载请注明出处:http://www.cnblogs.com/Uncle-Keith/p/5782228.html

  • 相关阅读:
    Sample XPS Documents Download
    触发器中的inserted表和deleted表
    Using freewheel.labs.autodesk.com to auto generate preview images of DWF files on your web site
    解除SQL对组件"Ad Hoc Distributed Queries"的"STATEMENT'OpenRowset OpenDatasource"的访问
    读写xps
    XPS文件,在Windows XP下的打开查看阅读和打印方法。
    Learning to Reference Inserted and Deleted Tables
    Get value from updated, inserted and deleted
    Reinstall Microsoft Helper Viewer
    如何查找文件的IFilter
  • 原文地址:https://www.cnblogs.com/unclekeith/p/5782228.html
Copyright © 2011-2022 走看看