html清除浮动

css浮动可以实现很多功能,比如多栏布局,多元素的内联排列等等,在同时也带来了一些问题,浮动后就脱离了原来的文档流,进而就会造成父元素塌陷。

目前解决浮动造成的这个问题主要有一下几种方案:

1. clear:both清除浮动

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

    .container {
        border: 1px solid red;
    }

    .box {
        height: 100px;
        width: 100px;
        margin: 20px;
        background: green;
        float: left;
    }

2. 块状格式化上下文清除浮动

<b>什么是格式化上下文</b>
* 可以包含浮动元素
* 不被浮动元素覆盖
* 阻止父子元素的margin折叠

<b>如何创建格式化上下文</b>
* 根元素
* 浮动元素(float不是none)
* 绝对定位元素(position为fixed或absolute)
* display取值为inline-block,table-cell,table-caption,flex,inline-flex之一
* overflow不是visible的元

<div class="container">
        <div class="box"></div>
        <div class="box"></div>
        <div class="box"></div>
    </div>
        .container {
            border: 1px solid red;
            /*display:table;*/
            float:left;
            /*overflow: hidden;*/
            /*position: absolute;*/
        }

        .box {
            height: 100px;
            width: 100px;
            margin: 20px;
            background: green;
            float: left;
        }

3. 伪类清楚浮动

    <div class="clearfix">
        <div class="box"></div>
        <div class="box"></div>
        <div class="box"></div>
    </div>
        .clearfix:before,
        .clearfix:after {
            display: table;
            content: " ";
        }

        .clearfix:after {
            clear: both;
        }

        .clearfix {
            *zoom: 1;
        }

总结

常用的以上三种清楚浮动的办法,推荐使用第三种,兼容性比较好,并且没有添加格外的一些类,可移植性比较好

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,790评论 1 92
  • 在样式中增加如下样式 before的样式是清除margin-top塌陷要用的,after的样式是清除浮动用的(防止...
    Oo晨晨oO阅读 842评论 0 0
  • 浮动,从诞生那天起,它就是个特别的属性——既为网页布局带来新的方法,却又随之产生一系列的问题。当然,随着时间的推移...
    郝特么冷阅读 853评论 0 6
  • 这篇文章极好,以至于让我受益良多,就一字没有改动的转发过来一丝冰凉老师的文章 需要注意的是,display:tab...
    新晋小牛牛阅读 1,071评论 0 2
  • 1.安装Homebrew 因为安装nginx+rtmp需要Homebrew。使用命令man brew查看是否装有H...
    xiari1991阅读 329评论 0 0