浅谈CSS 高度塌陷问题

2024-06-24 11:15:18阅读量:41 字体:

表现

例如:

HTML:

浅谈CSS 高度塌陷问题

CSS:

表现为:



产生的原因

由上面的例子可以看出,first盒子没有设置高度,由子元素撑开,但是由于子盒子设置了浮动,脱离了标准流,所以导致first盒子没有高度,表现为second和third盒子向上移动了。

可以得出产生高度塌陷的原因:

在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。但是当为子元素设置浮动以后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。由于父元素的高度塌陷了,则父元素下的所有元素都会向上移动,这样将会导致页面布局混乱。

高度塌陷的解决办法:

1、给父元素设置固定高度。但是使用这种方式后,父元素的高度就不能根据子元素自动撑高了,可以根据自己页面的特点,如果可以固定高度,可以使用这种方式,否则,不推荐这种方式。

2、额外标签法,这是w3c推荐的解决方案,但是不推荐,因为html的原则是写出语义化的标签,这种方式会额外增加无意义的标签。

3、父元素的overflow属性(开启元素的BFC):

使用这种方式,属性值可以是非visible(hidden/auto/scroll)中任意,但是建议用hidden。

这种方式副作用较小,这种方式在ie6中不支持,可以外加zoom: 1;

4、单伪元素after清除浮动(开启元素的BFC):

这种方式现在使用比较广泛,很多大网站都是使用这种方式,副作用较小,只需要在配合处理ie6就可以了。

5、双伪元素清除浮动(开启元素的BFC):

这种做法写法比较麻烦,也不推荐。

清除浮动对父元素的影响后的效果:

BFC相关

根据W3C的标准,在页面中元素都一个隐含的属性叫做Block Formatting Context,简称BFC,该属性可以设置打开或者关闭,默认是关闭的。

当开启元素的BFC以后,元素将会具有如下的特性:

1.父元素的垂直外边距不会和子元素重叠

2.开启BFC的元素不会被浮动元素所覆盖

3.开启BFC的元素可以包含浮动的子元素


推荐阅读

  • 荣耀60声音小怎么办

    荣耀60声音小怎么办

    如果荣耀60手机的声音比较小的话,可以去系统内进行相应的调整,把手机的声音调大,具体的操作步骤如下: 荣耀60声音小怎么办 1、打开手机的设置,点击声音和振动”按钮,进入声音和振动的设置页...

    阅读: 985

  • ipad pro怎么录屏

    ipad pro怎么录屏

    ipad pro设备有录屏的功能,有需要的用户可以去手机的控制中心内打开按键进行录屏,具体的操作步骤如下: ipad pro怎么录屏 1、进入手机的桌面中,从手机屏幕的右上角往下滑,呼出控制中心的界面...

    阅读: 1048

  • 苹果平板如何隐藏app软件

    苹果平板如何隐藏app软件

    苹果平板没有隐藏app软件的功能,但是可以把app下载到资源库中,这样就不会显示在平板的桌面上,操作方法如下: 苹果平板如何隐藏app软件 1、打开平板的设置,点击主屏幕”按钮,进入主屏幕...

    阅读: 871

  • 荣耀x30如何升级鸿蒙系统

    荣耀x30如何升级鸿蒙系统

    荣耀x30手机升级鸿蒙系统需要去手机的设置内进行手动点击升级,系统会自动进行检测,具体的操作步骤如下: 荣耀x30如何升级鸿蒙系统 1、打开手机的设置,点击系统和更新”按钮,进入系统设置中...

    阅读: 980

  • 手机淘宝首页布局怎么变了

    手机淘宝首页布局怎么变了

    手机淘宝首页布局变了可能是开启了长辈模式,开启长辈模式的布局就会改变,可以通过设置改回原来的布局,具体操作步骤如下: 手机淘宝首页布局怎么变了 1、打开淘宝app,点击我的淘宝,再点击右上角的齿轮进入...

    阅读: 973

  • 强制解除小红书实名认证

    强制解除小红书实名认证

    小红书账号一旦实名认证过了就不能解除实名认证了,只能通过注销账号的方式来解除实名认证。具体的操作方式如下: 强制解除小红书实名认证 1、打开小红书,点击进入我”的界面,再点击右上角的三条横...

    阅读: 925