再讲解一下一个隐藏超出部分内容的属性为啥能够清除浮动呢?

再讲解一下一个隐藏超出部分内容的属性为啥能够清除浮动呢?

问题描述:

还是不太能理解为什么 overflow: hidden; 属性可以实现清除浮动的前因后果。

相关截图:

https://img1.sycdn.imooc.com/climg/65d822af099a034a13720477.jpg

https://img1.sycdn.imooc.com/climg/65d822ba09ee37e714210399.jpg

https://img1.sycdn.imooc.com/climg/65d822c60986115512950680.jpg

尝试过的解决方式:

如何理解这个属性可以实现清除浮动呢?我是这么理解的:内部的子元素都浮动起来了,体现在父盒子上父盒子就会受到影响出现塌陷的现象。而父盒子使用超出就隐藏浮动的形式,这样子盒子的内容其实都超出了,就隐藏了浮动,也就是关闭了内部元素浮动造成对父盒子的影响,父盒子就又能被撑起来了不会塌陷了。


我不知道我理解得对不对,求老师再讲解一下一个隐藏超出部分内容的属性为啥能够清除浮动呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,解答如下:

1、“内部的子元素都浮动起来了,体现在父盒子上,父盒子就会受到影响出现塌陷的现象”这句理解是对的,也是需要重点记忆的。使用浮动,存在的隐患就是“父元素高度塌陷”,父元素高度塌陷后,会带来一些样式布局上的bug。

2、overflow:hidden,虽然意思是“超出隐藏”,但是这个意思与“清除浮动”没什么关系。“超出隐藏”隐藏的不是浮动,而是子元素‘超出’的那部分。举个例子,有一个盒子(父元素),盒子里面有一朵花(子元素)。这朵花,处于浮动状态(子元素设置了浮动),此时它一半处于盒子内部,一半处于盒子外部。如果给盒子设置了“超出隐藏”,那么这朵花,处于盒外的那一半,就会消失,看不见了。处于盒子内部的这一半,还正常存在。这是超出隐藏,含义上的效果。

3、元素设置超出隐藏后,代码底层会做一些处理,进而实现“超出的部分,隐藏起来”的效果。这个底层处理方式,还会带来一个额外的效果,就是“清除浮动带来的不利影响“,即清除浮动。所以注意,清除浮动,并不是把浮动效果清除了,而是把浮动带来的隐患(高度塌陷等)清除了,只是平时会简单称为“清除浮动”。

4、使用overflow:hidden后,代码底层”会形成BFC。知道BFC这个名词就行,不用过于关注。BFC简单理解,就是一种特殊的布局容器,它会重新计算元素的空间、高度等信息,重新计算的时候,会把浮动元素也考虑在内,实际的效果就是“清除浮动”。这一条内容,简单了解就行,不用过于关注。

祝学习愉快!

  • 雪山凌狐 提问者 #1

    老师,感谢您的解答!

    关于第3点,我还是有一些疑问:

    首先,overflow: hidden; 本身的效果是把超出的部分给隐藏起来,没超出的部分保留能显示,这个跟能够形成BFC和清除浮动没有关系。而使用它使得代码底层做了处理,这个处理还带来了额外的好处或者说效果,就是“清除浮动带来的不利影响”,形成BFC,进而实现清除浮动的额外效果。所以我在理解的时候,需要把他本身的效果超出的部分隐藏跟实现的额外功能,清除浮动带来的不利影响,拆开成两部分来理解,对吗?

    2024-02-24 22:33:29
  • 好帮手慕久久 回复 提问者 雪山凌狐 #2

    可以将这两个常用作用,分别记忆,这样好理解,但是也不能完全独立的去记忆,因为有的时候会有特殊情况。比如,某个布局中,既有浮动元素,子元素又有超出父元素的部分,此时我们既想保留浮动效果并清除浮动,又想保留子元素超出的部分,此时就不能用overflow: hidden清除浮动,因为它虽然能清除浮动,但是会把超出的结构隐藏掉。此时,就需要使用其他清除浮动的办法。

    2024-02-26 09:24:33
  • 雪山凌狐 提问者 回复 好帮手慕久久 #3

    谢谢老师的解答!

    2024-02-27 10:09:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师