html怎么清除悬浮的影响,【CSS】浮动和清除浮动

一、浮动

1. 浮动的定义:浮动是指让元素脱离标准流(文档流),漂浮在标准流之上,和标准流不是一个层次。而且,浮动元素会按照指定的方向发生移动,遇到父元素边界或者相邻的浮动元素时停下来。

注意:浮动元素设置宽高有效。

2. 实现浮动的途径:float、absolute、fixed 。

3. 以 div 为例,用 float 来实现浮动:

(1)首先,div 是块级元素,在页面中独占一行,自上而下排列,也就是传说中的标准流。如下图所示:

e1efe2f8ae4345d29804986baace0b74.png

从图中我们可以看出,即使 div1 的宽度很小,页面中一行可以容下 div1 和 div2,div2 也不会排在div1后边,因为 div 是独占一 行的。

(2)现在我们让div2 左浮动(float:left),那么它将脱离标准流,但 div1、div3、div4 仍然在标准流当中,所以 div3 会自动向上移动,占据div2 的位置,重新组成一个新的标准流。如下图所示:

87d3682792b3436091de3ca5754838f2.png

因为浮动是漂浮在标准流之上的,因此 div2 挡住了一部分 div3,div3 看起来变“矮”了。

现在我们让div2 右浮动(float:right),如下图所示:

417a64042e7d427f93aa106a56880313.jpg

结论1:如果A元素是浮动元素,且它的上一个元素是标准流中的元素,那么A元素的相对垂直位置不会改变,也就是说A元素的顶部总是和上一个元素的底部对齐。

(3)现在我们让 div2 div3 都左浮动(float:right),那么 div4 会自动向上移动,与 div1 重新组成一个新的标准流,如下图所示:

7a87afd8008d4f68b7d66661c8ca78a9.png

现在我们让div2 div3 div4 都右浮动(float:right),如下图所示:

9c920f5d39ea496e8c81357bcc6749ee.jpg

结论2:如果A元素是浮动元素,且它的上一个元素也是浮动元素,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素就会被挤到下一行)。

二、清除浮动

1. 清除浮动主要针对 float 产生的浮动元素。

2. 高度塌陷:当浮动元素的父元素高度自适应(不设置高度时),父元素会发生高度塌陷。如下图所示:

ee569e30ba97400a886e1a2eb8a75ece.png

3. 清除浮动的方法:

方法一:使用 clear

在浮动元素下方添加空标签 div,并给空标签 div 添加CSS样式:{ clear:both }

缺点:会增加无意义的标签。

给浮动元素的下一个元素添加CSS样式:{ clear:both }

【1】clear : none | left | right | both | inherit

none

默认值。允许两边都可以有浮动对象

left

不允许左边有浮动对象

right

不允许右边有浮动对象

both

不允许有浮动对象

inherit

继承

【2】以 div 为例:

(1)假设页面中只有两个元素 div1、div2,且它们都是左浮动,如下图所示:

c5947c603c16419586e151a4efeedc3b.png

清除浮动:在 div2 的CSS样式中使用 clear:left ;来指定 div2 元素左边不允许出现浮动元素,这样 div2 就被迫下移一行,如下图所示:

46cac7dc2156453795fbc57e9c2d02c9.png

(2)假设页面中只有两个元素 div1、div2,且它们都是右浮动,如下图所示:

f7802e9b5ba0495d91bdd24eee5c4960.png

清除浮动:在 div2 的CSS样式中使用 clear:right ;来指定 div2 元素右边不允许出现浮动元素,这样 div2 就被迫下移一行,如下图所示:

3f72ee141585458cbbb0aa7af251d2fc.png

结论3:清除浮动 (clear)只能影响使用清除的元素本身,不能影响其他元素。

(3)清除浮动效果图:

1d04912f28de4adb930050cef79dd97b.png

方法二:使用 br

在浮动元素下方添加:

缺点:不符合工作中:结构、样式、行为,三者分离的要求。

清除浮动效果图:同方法一

方法三:给浮动元素的父元素设置高度

缺点:当浮动元素高度不确定的时候不适用。

清除浮动效果图:

0efdaea0b2084824892a4f0cb76640ef.jpg

方法四:让浮动元素的父元素也浮动

缺点:需要给每个浮动元素的父元素添加浮动,而且浮动多了容易出现问题。

清除浮动效果图:

2b291ce22a9c421b9e0969a94cb984cb.png

方法五:把浮动元素的父元素设置成 { display:inline-block }

缺点:父元素的 margin 左右、auto 失效,无法使用 { margin: 0 auto } 居中了。

清除浮动效果图:

ececadafbd5b4f07a58d2fb64f7d523a.png

方法六:把浮动元素的父元素设置成 { overflow:hidden }

缺点:需要配合“宽度”或者“zoom”兼容IE6 IE7;即再添加 { zoom:1 }

清除浮动效果图:

9f78a92a81c148a9ab6a69735b3a18e7.png

方法七:使用 :after 伪类,给父元素设置(推荐):

选择父元素 :after {

content:".";

clear:both;

display:block;

height:0;

visibility:hidden;

}

注意:

:after伪类 在元素内部末尾添加内容

:after { content: "添加的内容"; } IE6 IE7 下不兼容

缺点:需要配合“宽度”或者“zoom”兼容IE6 IE7;即再添加 { zoom:1 }

选择父元素 { zoom:1 }

注意:

zoom 缩放

a. zoom属性是IE浏览器的专有属性,Firefox等浏览器不支持。

b. 触发 IE 的 hasLayout 属性,使元素根据自身内容计算宽高,清除浮动。

zoom : normal | number

normal :  默认值。实际尺寸

number :  百分数 | 无符号浮点实数 比如:zoom:1.2,zoom:120%

清除浮动效果图: 同方法六

注意:

第(1)、(2)种方法,浮动元素会占据文档流的空间;但后面的五种方法不会,只是解决了高度坍塌的问题。

总结

1. 相关概念

浮动的定义:浮动是指让元素脱离标准流(文档流),漂浮在标准流之上,和标准流不是一个层次。而且,浮动元素会按照指定的方向发生移动,遇到父元素边界或者相邻的浮动元素时停下来。注意:浮动元素设置宽高有效。

实现浮动的途径:float、absolute、fixed 。

清除浮动主要针对 float 产生的浮动元素。

高度塌陷:当浮动元素的父元素高度自适应(不设置高度时),父元素会发生高度塌陷。

2. 清除浮动的方法

(1)使用 clear

(2)使用 br

(3)给浮动元素的父元素设置高度

(4)让浮动元素的父元素也浮动

(5)把浮动元素的父元素设置成 { display:inline-block }

(6)把浮动元素的父元素设置成 { overflow:hidden },兼容IE6 IE7:{ zoom:1 }

(7)给浮动元素的父元素使用 :after 伪类,兼容IE6 IE7:{ zoom:1 }(推荐)

注意:

第(1)、(2)种方法,浮动元素会占据文档流的空间;但后面的五种方法不会,只是解决了高度坍塌的问题。

3. 结论

如果A元素是浮动元素,且它的上一个元素是标准流中的元素,那么A元素的相对垂直位置不会改变,也就是说A元素的顶部总是和上一个元素的底部对齐。

如果A元素是浮动元素,且它的上一个元素也是浮动元素,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素就会被挤到下一行)。

清除浮动 (clear) 只能影响使用清除的元素本身,不能影响其他元素。

参考:

经验分享:CSS浮动(float,clear)通俗讲解

css清除浮动float的七种常用方法总结和兼容性处理

用after伪类清除浮动

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值