清除浮动最终解决方案

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        
        <style type="text/css">
            
            .box1{
                width: 100px;
                height: 100px;
                background-color: yellow;
                /*
                 * 设置box1向左浮动
                 */
                float: left;
            }
            .box2{
                width: 200px;
                height: 200px;
                background-color: yellowgreen;
                /*
                 * 由于受到box1浮动的影响,box2整体向上移动了100px
                 * 我们有时希望清除掉其他元素浮动对当前元素产生的影响,这时可以使用clear来完成功能
                 * clear可以用来清除其他浮动元素对当前元素的影响
                 * 可选值:
                 *      none,默认值,不清除浮动
                 *      left,清除左侧浮动元素对当前元素的影响
                 *      right,清除右侧浮动元素对当前元素的影响
                 *      both,清除两侧浮动元素对当前元素的影响
                 *              清除对他影响最大的那个元素的浮动
                 */
                
                /*
                 * 清除box1浮动对box2产生的影响
                 * 清除浮动以后,元素会回到其他元素浮动之前的位置
                 */
                /*clear: left;*/
                float: right;
            }
            .box3{
                width: 300px;
                height: 300px;
                background-color: skyblue;
                
                clear: both;
            }
            
        </style>
        
    </head>
    <body>
        
        <div class="box1"></div>
        
        <div class="box2"></div>
        
        <div class="box3"></div>
        
    </body>
</html>


解决:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            
            .box1{
                border: 1px solid red;
            }
            
            .box2{
                width: 100px;
                height: 100px;
                background-color: blue;
                
                float: left;
            }
            
            /*
             * 解决高度塌陷方案二:
             *  可以直接在高度塌陷的父元素的最后,添加一个空白的div,
             *  由于这个div并没有浮动,所以他是可以撑开父元素的高度的,
             *  然后在对其进行清除浮动,这样可以通过这个空白的div来撑开父元素的高度,
             *  基本没有副作用
             * 
             * 使用这种方式虽然可以解决问题,但是会在页面中添加多余的结构。
             */
            .clear{
                clear: both;
            }
            
        </style>
    </head>
    <body>
        <div class="box1">
            <div class="box2"></div>
            <div class="clear"></div>
        </div>
    </body>
</html>


解决三:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            
            .box1{
                border: 1px solid red;
            }
            
            .box2{
                width: 100px;
                height: 100px;
                background-color: blue;
                
                float: left;
            }
            
            /*通过after伪类,选中box1的后边*/
            /*
             * 可以通过after伪类向元素的最后添加一个空白的块元素,然后对其清除浮动,
             *  这样做和添加一个div的原理一样,可以达到一个相同的效果,
             *  而且不会在页面中添加多余的div,这是我们最推荐使用的方式,几乎没有副作用
             */
            .clearfix:after{
                /*添加一个内容*/
                content: "";
                /*转换为一个块元素*/
                display: block;
                /*清除两侧的浮动*/
                clear: both;
            }
            
            /*
             * 在IE6中不支持after伪类,
             *  所以在IE6中还需要使用hasLayout来处理
             */
            .clearfix{
                zoom:1;
            }
            
            
        </style>
    </head>
    <body>
        <div class="box1">
            <div class="box2"></div>
        </div>
    </body>
</html>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容