• 【随笔】清除浮动float的几种办法


      关于浮动问题,我相信大家很容易遇到,比如说头部的导航栏的制作,就要用到浮动,页面的布局有时也会遇到浮动,那么怎么解决浮动的问题呢,我自己大概言简意赅的总结了我所知道的几种方法。

      首先造成浮动的原因是:元素浮动会造成元素脱离文档流,造成父元素没有高度。下面举一个例子:

    <style>
        .box{
            background-color:gray;   /*两个方块的背景颜色*/
        }
        .left{                       /*红色方块*/
            width: 100px;
            height: 100px;
            background-color: red;
            float: left;
        }
        .right{                      /*黄色方块*/
            width: 100px;
            height: 100px;
            background-color: yellow;
            float: right;
        }
    </style>
    <body>
        <div class="box">
            <div class="left"></div>
            <div class="right"></div>
        </div>
        <div>我是文字,哈哈哈哈</div>
    </body>

    效果图如下:

    问题:以上的图中,文字本应该在红色方块下方的,但是因为浮动问题,出现在了红色方块的右边。

    解决方法

    第一种:给父元素加上固定高度;

    .box{
                background-color:gray;/* 两个方块的背景颜色*/
                height: 150px;
    }

      这种方法必须要知道父元素高度是多少,灵活性不是很高,不建议使用。

    效果图如下

     

    第二种:父元素结束前加一个空的div 设置样式为clear:both;。

    <div class="box">
            <div class="left"></div>
            <div class="right"></div>
            <div style="clear:both"></div>
    </div>

      这种方法给代码增加了冗余,也不建议使用。

    效果图如下

    第三种:给父元素设置overflow:hidden

    .box{
            overflow: hidden;
            background-color:gray;
        }

           这种方法的缺点主要有二个,一个是IE 6不支持,另一个是一旦子元素的大小超过父容器的大小,就会出显示问题。
           在这里简单的说一下,为什么overflow:hidden能清除浮动,给父元素加上overflow:hidden之后是要计算超出的大小来隐藏,所以父容器会自动撑开自己把所有的子元素放进去,同时会计算浮动的子元素。也顺便清理了浮动,但要真正去深度了解的话,建议去看BFC。

    效果图如下

     

    第四种:通过css伪元素:after解决

    .clearfix:after{
                display:block;
                content:"";
                visibility:hidden;
                clear:both;
                height:0;
                font-size:0;
            }

     再把.clearfix放进父元素里:

    <div class="box clearfix">
            <div class="left"></div>
            <div class="right"></div>
    </div>
    <div>我是文字,哈哈哈哈</div>

      但这种方法:after选择器IE 6不支持,添加一条IE 6的独有命令"zoom:1;"就可以了,如下:

    .clearfix:after{
                display:block;
                content:"";
                visibility:hidden;
                clear:both;
                height:0;
                font-size:0;
            }
    .clearfix {
        zoom: 1;
    }

    效果图如下

      这大概是我所知道的几种,其实清除浮动的方法还是蛮多的,这几种的方法主要是clear的运用,以及对BFC机制的触发,如果想要深了解的话,建议大家不妨去看一下BFC吧。
      本人是前端初学者,也是第一次写博客笔记,以上是我的理解,如有问题,请多多指教。

      如果我有不足之处,敬请谅解,也可以指出,也去这位博主写的文章看看:http://blog.csdn.net/FE_dev/article/details/68954481  很详细,方法很多,也容易理解。

      如果想要了解的BFC的话,也可以去这位博主写的文章看看:http://www.cnblogs.com/asheng2016/p/7281784.html 也很容易理解。

  • 相关阅读:
    spring mvc valid
    记录一次springmvc 404
    用到的 git 命令
    tomcat java.lang.OutOfMemoryError: PermGen space
    angularjs 表单验证 和 页面初始化闪烁
    在jsp中 EL表达式不生效
    关于jsp中使用jstl的问题
    块级元素,内联元素和定位
    java学习第4天
    STL 常用集合算法
  • 原文地址:https://www.cnblogs.com/biji123/p/8283621.html
Copyright © 2020-2023  润新知