清除浮动

给父元素设置宽高:

由于浮动后的元素脱离文档流,无法撑起父元素的宽高,可以设置父元素的宽高。

<style>
    *{
        margin: 0;
        padding: 0;
    }
    .box1{
        background-color: red;
        /*这里*/
        height: 50px;
    }
    .box2{
        background-color: lightblue;
    }
    ul{
        list-style: none;
    }
    .ul1 li{
        background-color: blue;
    }
    .ul2 li{
        background-color: green;
    }
    ul li{
        float: left;
    }
</style>
<div class="box1">
    <ul class="ul1">
        <li>张三</li>
        <li>李四</li>
        <li>王麻子</li>
    </ul>
</div>
<div class="box2">
    <ul class="ul2">
        <li>天朗</li>
        <li>气清</li>
        <li>风和</li>
    </ul>
</div>

CSS的clear属性:

给后面的盒子元素添加clear属性:
clear属性取值:
none: 默认取值, 按照浮动元素的排序规则来排序(左浮动找左浮动, 右浮动找右浮动);
left: 不要找前面的左浮动元素;
right: 不要找前面的右浮动元素;
both: 不要找前面的左浮动元素和右浮动元素。

注意点:

当我们给某个元素添加clear属性之后, 那么这个属性的margin属性就会失效。

<style>
    *{
        margin: 0;
        padding: 0;
    }
    .box1{
        background-color: red;
      }
    .box2{
        background-color: lightblue;
        clear: both;
    }
    ul{
        list-style: none;
    }
    .ul1 li{
        background-color: blue;
    }
    .ul2 li{
        background-color: green;
    }
    ul li{
        float: left;
    }
</style>

<div class="box1">
    <ul class="ul1">
        <li>张三</li>
        <li>李四</li>
        <li>王麻子</li>
    </ul>
</div>
<div class="box2">
    <ul class="ul2">
        <li>天朗</li>
        <li>气清</li>
        <li>风和</li>
    </ul>
</div>

隔墙法:

  1. 外墙法:
  2. 在两个盒子中间添加一个额外的块级元素;
  3. 给这个额外添加的块级元素设置clear: both;属性。
<style>
*{
        margin: 0;
        padding: 0;
    }
    .box1{
        background-color: red;
      }
    .box2{
        background-color: lightblue;
        clear: both;
    }
    ul{
        list-style: none;
    }
    .ul1 li{
        background-color: blue;
    }
    .ul2 li{
        background-color: green;
    }
    ul li{
        float: left;
    }
/*这里*/
  .wall{
            clear: both;
        }
     .h2{
height:20px;
 background-color: deepskyblue;
</style>

<div class="box1">
    <ul class="ul1">
        <li>张三</li>
        <li>李四</li>
        <li>王麻子</li>
    </ul>
</div>

<div class="box2">
    <ul class="ul2">
        <li>天朗</li>
        <li>气清</li>
        <li>风和</li>
    </ul>
</div>

注意点:
外墙法它可以让第二个盒子使用margin-top属性;
外墙法不可以让第一个盒子使用margin-bottom属性。

  1. 内墙法
  1. 在第一个盒子中所有子元素最后添加一个额外的块级元素
  2. 给这个额外添加的块级元素设置clear: both;属性
<style>
*{
        margin: 0;
        padding: 0;
    }
    .box1{
        background-color: red;
      }
    .box2{
        background-color: lightblue;
        clear: both;
    }
    ul{
        list-style: none;
    }
    .ul1 li{
        background-color: blue;
    }
    .ul2 li{
        background-color: green;
    }
    ul li{
        float: left;
    }
/*这里*/
  .wall{
            clear: both;
        }
   </style>

<div class="box1">
    <ul class="ul1">
        <li>张三</li>
        <li>李四</li>
        <li>王麻子</li>
    </ul>
 <div class="wall"></div>
</div>

<div class="box2">
    <ul class="ul2">
        <li>天朗</li>
        <li>气清</li>
        <li>风和</li>
    </ul>
</div>

注意点:
内墙法它可以让第二个盒子使用margin-top属性;
内墙法它可以让第一个盒子使用margin-bottom属性。
3.外墙法和内墙法区别?
外墙法不能撑起第一个盒子的高度, 而内墙法可以撑起第一个盒子的高度。

伪元素选择器清除

伪元素选择器作用就是给指定标签的内容前面添加一个子元素或者给指定标签的内容后面添加一个子元素。
格式:
标签名称::before{
属性名称:值;
}
给指定标签的内容前面添加一个子元素;
标签名称::after{
属性名称:值;
}
给指定标签的内容后面添加一个子元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>68-伪元素选择器</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        div{
            width: 200px;
            height: 200px;
            background-color: red;
        }
        /*
        p{
            width: 50px;
            height: 50px;
            background-color: pink;
        }
        */
        div::before{
            content: "爱你";
            width: 50px;
            height: 50px;
            background-color: pink;
            display: block;
        }
        div::after{
            /*指定添加的子元素中存储的内容*/
            content: "么么哒";
            /*指定添加的子元素的宽度和高度*/
            width: 50px;
            /*height: 50px;*/
            /*内容是可以超出标签的范围的, 所以高度为0依然可以看见内容*/
            height:0;
            background-color: pink;
            /*指定添加的子元素的显示模式*/
            display: block;
            /*隐藏添加的子元素*/
            visibility: hidden;
        }
    </style>
</head>
<body>
<div>
    <!--<p>爱你</p>-->
    我是文字
    <!--<p>么么哒</p>-->
</div>
</body>
</html>

利用伪元素选择器清除浮动本质上就是内墙法, 只不过是直接通过CSS代码添加了内墙, 其它特性和内墙法都一样。
注意点:
IE6中不支持这种方式, 为了兼容IE6必须给前面的盒子添加*zoom:1;属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>69-清除浮动方式四</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box1{
            background-color: red;
            /*margin-bottom: 10px;*/
        }
        .box2{
            background-color: green;
            /*margin-top: 10px;*/
        }
        .box1 p{
            width: 100px;
            background-color: blue;
        }
        .box2 p{
            width: 100px;
            background-color: yellow;
        }
        p{
            float: left;
        }
        .box1::after{
            /*设置添加的子元素的内容为空*/
            content: "";
            /*设置添加的子元素为块级元素*/
            display: block;
            /*设置添加的子元素的高度为0*/
            height: 0;
            /*设置添加的子元素看不见*/
            visibility: hidden;
            /*给添加的子元素设置clear: both;*/
            clear: both;
        }
        .box1{
            /*兼容IE6*/
            *zoom:1;
        }
    </style>
</head>
<body>
<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
</div>
<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
</body>
</html>

overflow:hidden

  1. 可以将超出标签范围的内容裁剪掉;
  2. 清除浮动;
  3. 可以通过overflow: hidden;让里面的盒子设置margin-top之后, 外面的盒子不被顶下来。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 盒子的高度问题 1.标准流中盒子的高度可以被内容高度撑起来;2.浮动流中浮动的内容不能撑起盒子的高度; 为什么要清...
    壹点微尘阅读 511评论 0 0
  • 浮动元素高度问题 在标准流中内容的高度可以撑起父元素的高度 在浮动流中浮动的元素是不可以撑起父元素的高度的 清除浮...
    MGd阅读 407评论 0 0
  • 清除浮动 盒子高度问题 在标准流中内容的高度可以撑起盒子的高度 在浮动流中浮动元素内容的高不可以撑起盒子的高 清除...
    Jackson_yee_阅读 359评论 0 0
  • 盒子高度问题 1.在标准流中内容的高度可以撑起父元素的高度2.在浮动流中浮动的元素是不可以撑起父元素的高度的 清除...
    往事一块六毛八阅读 428评论 0 0
  • 曾看到各种书单多次推荐《苏菲的世界》这本书,一直觉得这应该是描写"苏菲"这个小姑娘的周围世界:十四五岁的年纪,在美...
    笑声不断的风铃阅读 887评论 0 0

友情链接更多精彩内容