float你所不知道的事

作者: bo_bo_bo_la | 来源:发表于2017-08-21 19:51 被阅读31次

    一、简介

            float浮动,起源于图片与文字的环绕形式。类似于Word里面的文字居左,居右或者文字浮于图片之上。有三个属性值:left左浮动、right右浮动和none不浮动。利用浮动布局可以解决元素与元素之间的无缝衔接,不用考虑块级标签不能同行排列的特性,更不用考虑行级标签代码换行被解析的困扰,即不用在给其父级设置font-size=0这样的操作。大大的减少了我们的代码体积。

    1.1、float带来的困扰

            如果元素设置float属性,则这个元素会脱离文档流,即在HTML中不占用任何位置,也就是说浮动元素不会撑开其父级的高度,并且它原有的位置会被下一个元素所占用,但是由于其是浮动元素,所以它的层级会比普通元素高。导致元素会覆盖掉下面的元素。而且设置成float元素之后不会继承其父级的宽高,即使该元素是块级元素也不会。

    1.2、解决办法

           1.2.1、上面说过,float元素会脱离文档流,不占用位置,所以如果其父级的高是auto的话,这会导致父级的高为0,所以第一种解决办法给父级一个高度。

           1.2.2、如果元素为float,则可以在其后面写上一个clear:left | right | both;这一样式,(从左至右)表示,清除上一同级元素的左浮动 | 右浮动 | 两边浮动。但是这一方法不推荐使用。在实际项目开发过程中,使用float的次数很多,如果每一次都需要在float元素之后再写一个清除浮动的话,会造成代码冗余,导致体积较大。

           1.2.3、借助伪类。element::after{ content:”“; display: block;},元素后面加上伪类::after,表示在该元素之后所编写的样式,不占用HTML里面任意一个空间,而且如果将该方法写在外部样式表里面也可以起到重复利用的效果,这样即能达到目的,又能减少代码的堆积

    二、巧用float

    2.1、eg1:利用HTML、CSS编写一段代码,实现一段固定,一段自适应。

    要求:一端固定的元素宽为240px,margin=10px;另一端宽度自适应与浏览器的宽度

    代码如下:

    <!doctype html>

    <html>

        <head>

            <meta charset="utf-8" />

            <title>一段固定,一段自适应</title>

            <style>

                 .one {

                       width: 240px;

                       height: 600px;

                       background: red;

                       float:left;

                 }

                .two {

                       height: 500px;

                       background: blue;

                       margin-left: 250px;

                 }

            </style>

        </head>

        <body>

            <div class="one"></div>

            <div class="two"></div>

          </body>

     </html>

            分析:第一个盒子左浮动,导致其脱离文档流,不占用body里面任何空间,所以第二个盒子会继承其父级所有的宽度,但这样的效果不是我们想要的,所以给第二个盒子加上一个margin-left:250px(one盒子的宽240px + margin值10px);

    eg2:利用HTML、CSS实现两端固定,中间自适应的效果

            要求:两端固定的宽度为240px,margin:10px;中间的盒子自适应浏览器的宽度

            代码如下:

            .one {

               width: 240px;

               height: 600px;

               background: red;

               float:left;

             }

            .two {

                width:240px;

                height: 600px;

                background: blue;

                float:right;

              }

            .middle {

                height:500px;

               background: black;

               margin: 0 250px;

            }

        <body>

             <div class="one"></div>

             <div class="two"></div>

           <div class="middle"></div>

        </body>

    分析:原理跟例1很像,需要注意的就是body里面的<div class="middle"></div>的书写顺序,HTML代码的执行顺序是自上而下,如果将Middle写在two之前,则Middle会将整个HTML填满,导致two换行右浮动,所以要将Middle写在two之后。

    一段固定,一段自适应

    相关文章

      网友评论

        本文标题:float你所不知道的事

        本文链接:https://www.haomeiwen.com/subject/uoshdxtx.html