清除浮动的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>

网页内容是
在这里插入图片描述
我们最终的目的是清除浮动
在这里插入图片描述
由于并没有给两个div设置宽高,在没有给p标签设置左浮之前,div的宽高完全是由p标签的内容撑起来的,现在所有p标签左浮,p标签脱离标准流,在这着重说一下
在标准流中,内容的高度可以撑起父元素的高度
在浮动流中,浮动的元素是不可以撑起父元素的高度的
所以,当p标签左浮时,父元素div的高度消失,只剩下p标签,按照左浮规则,就会出现如图1那样的情况。

**

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

**

.box1{
	height:21px;
	 background-color: #096;
}

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

**

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

**
clear取值

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

在这里插入图片描述
注意点:当我们给某个元素添加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属性,而是设置额外块级元素的高度!!!
在这里插入图片描述
**

清除浮动方式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: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>

在这里插入图片描述
特别感谢李南江老师>_<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值