清除浮动的几种方式

浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            .float-div div{
                width: 100px;
                height: 100px;
                margin: 20px;
                /*文字内容垂直水平居中写法*/
                text-align: center;
                line-height: 100px;
                /**/
                background-color:#FFFF99;
                /*浮动*/
                float: left;
            }
            .normal-div{
                width: 100px;
                height: 100px;
                line-height: 100px;
                /**/
                background-color:#CCCCFF;
            }
        </style>
    </head>
    <body>
        <div class="float-div">
            <div>1</div>
            <div>2</div>
            <div>3</div>
        </div>
        <div class="normal-div">A</div>
    </body>
</html>
原版图

1.添加空div标签,并设置样式 clear: both

在浮动元素的后面添加一个空 div 兄弟元素,利用 css 提高的 clear:both 清除浮动,让父级 div 能自动获 取到高度
缺点:如果页面浮动布局多,就要增加很多空 div,让人感觉很不好 .

        <div class="float-div">
            <div>1</div>
            <div>2</div>
            <div>3</div>
        </div>
        <div class="clear-both"></div>
        <div class="normal-div">A</div>
        .clear-both {
            clear: both;
        }

2.父级标签定义伪类 ::after

        .float-div::after {
            content: '';
            height: 0;
            /**/
            display: block;
            clear: both;        
        }

3.父级标签增加样式 overflow:hidden

父级 div 定义 overflow:hidden 超出盒子部分会被隐藏,不推荐使用.

        .float-div {
            overflow: hidden;
        }

4.父级 div 定义 height

原理:父级 div 手动定义 height,就解决了父级 div 无法自动获取到高度的问题。
优缺点:简单、代码少、容易掌握 ,但 只适合高度固定的布局.

5.父级 div 定义 伪类:after 和 zoom

原理:IE8 以上和非 IE 浏览器才支持:after,原理和方法 1 有点类似,zoom(IE 转有属性)可解决 ie6,ie7 浮动问题 .
推荐使用,建议定义公共类,以减少 CSS 代码。

        .float-div:after{
            /*//设置内容为空
            //高度为0
            //行高为0
            //将文本转为块级元素
            //将元素隐藏
            //清除浮动*/
            content: "";
            height: 0;
            line-height: 0;
            display: block;
            visibility: hidden;
            clear: both;
     }
        .float-div{
            /*为了兼容IE*/
            zoom:1;
        }
清除浮动-效果图

备注:清除浮动的几种方式

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,790评论 1 92
  • 问:清除浮动的几种方式,各自的优缺点 1.使用空标签清除浮动clear:both。 原理:添加一个空div,利用c...
    LuckyJin阅读 13,679评论 0 7
  • 浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。 方法一:添加空div标签 cle...
    WPeach阅读 2,094评论 1 0
  • 这篇文章极好,以至于让我受益良多,就一字没有改动的转发过来一丝冰凉老师的文章 需要注意的是,display:tab...
    新晋小牛牛阅读 1,070评论 0 2
  • 一、后台管理小技巧 在后台管理的时候,有一些小技巧可以帮助你提高管理效率。 公众号后台每天会有大量回复,而系统默认...
    路边酒鬼阅读 1,084评论 0 1