天天看点

清除浮动的6种方式清除浮动的6种方式

清除浮动的6种方式

首先,先拿一个例子引入这次的内容

首先是页面内容

<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>
           

然后是样式

<style>
        .box1{
            background-color: #096;
        }
        .box1 p{
            background-color: red;
            width: 100px;
        }
        .box2{
            background-color: tomato;
        }
        .box2 p{
            background-color: blue;
            width: 100px;
        }
        p{
            float: left;
        }
    </style>
           

网页内容是

清除浮动的6种方式清除浮动的6种方式

我们最终的目的是清除浮动

清除浮动的6种方式清除浮动的6种方式

由于并没有给两个div设置宽高,在没有给p标签设置左浮之前,div的宽高完全是由p标签的内容撑起来的,现在所有p标签左浮,p标签脱离标准流,在这着重说一下

在标准流中,内容的高度可以撑起父元素的高度

在浮动流中,浮动的元素是不可以撑起父元素的高度的

所以,当p标签左浮时,父元素div的高度消失,只剩下p标签,按照左浮规则,就会出现如图1那样的情况。

**

清除浮动方式1:给前面父元素设置高度

**

.box1{
	height:21px;
	 background-color: #096;
}
           
清除浮动的6种方式清除浮动的6种方式

注意:在企业开发中,我们能不写高度就不写高度,所以这种方式用的很少。

**

清除浮动方式2:给后面盒子添加clear属性

**

clear取值

取值 定义
none 默认取值,按照浮动元素的排序规则来排序(左浮动找左浮动,右浮动找右浮动)
left 不要找前面的左浮动元素
right 不要找前面的右浮动元素
both 不要找前面的左浮动元素和右浮动元素
.box2{
            clear: both;
            background-color: tomato;
        }
           
清除浮动的6种方式清除浮动的6种方式

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

**

清除浮动方式3:外墙法

**

<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
</div>
<div class="wall h20" style=“clear:both;height:20px”></div><!--外墙法:添加一个额外的块级元素-->
<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
           

1、在两个盒子中间添加一个额外的块级元素

2、给这个额外的块级元素设置clear:both属性

注意点:外墙法可以让第二个盒子使用margin-top属性,但是不能让第一个盒子使用margin-bottom属性。 但一般不会设置第一个盒子的margin-bottom属性或第二个盒子的margin-top属性,而是设置额外块级元素的高度!!!

清除浮动的6种方式清除浮动的6种方式

**

清除浮动方式4:内墙法

**

<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
    <div class="wall h20" style=“clear:both;height:20px”></div>
</div>
<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
           

1、在第一个盒子中所有子元素最后添加一个额外的块级元素

2、给这个额外添加的块级元素设置clear:both属性

注意点:

1、内墙法可以让第二个盒子使用margin-top属性,也可以让第一个盒子使用margin-bottom属性

2、 在企业开发中不常用隔墙法来清除浮动,因为前端开发推崇样式和结构分离,每一段都加一个墙的话,

代码会冗余很多。

3、隔墙法是添加一个块级元素,但在前端开发中,是结构和样式分离,而且添加一个块级元素它没有给任何元素添加语义,所以不推荐这样的写法,而清除浮动改变的是网页的样式,而改变样式最好用CSS来做。所以伪选择器正好是通过CSS代码来清除浮动。符合结构和样式分离思想,我们比较推荐这一种。

**

清除浮动方式5:伪元素选择器(CSS3新增)

**

1、什么是伪元素选择器?

伪元素选择器作用就是给指定标签的内容前面添加一个子元素

或者给指定标签的内容后面添加一个子元素

2、格式

(1)给指定标签的内容前面添加一个子元素

标签名称::before{

属性名称:值;

}

(2)指定标签的内容后面添加一个子元素

标签名称::after{

属性名称:值;

}

.box1::after{
            /*设置添加的子元素的内容为空*/
            content: '';
            /*设置添加的子元素为块级元素*/
            display: block;
            /*让子元素不占用空间*/
            height: 0;
            /*设置添加的子元素看不见*/
            visibility: hidden;
            /*给添加的子元素设置clear:both*/
            clear: both;
        }
        .box1{
            /*兼容ie6*/
            *zoom:1;
        }
           
清除浮动的6种方式清除浮动的6种方式

**

清除浮动方式6:overflow:hidden

**

overflow:hidden;

作用:

1.1 可以将超出标签范围的内容裁减掉

1.2 清除浮动!!!

1.3 可以让里面的盒子设置margin-top之后,

外面的盒子不被顶下来

<div class="box1" style="overflow:hidden">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
</div>
<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
           
清除浮动的6种方式清除浮动的6种方式

特别感谢李南江老师>_<

继续阅读