高度塌陷和BFC、Clear、Clearfix、高度塌陷和外边距重叠的解决方案

高度塌陷

  • 在浮动布局中,父元素的高度默认是被子元素撑开的,当子元素浮动后,会完全脱离文档流,导致无法撑开父元素,致使父元素的高度丢失
  • 父元素高度丢失后,会改变页面的布局,所以必须修正
    在这里插入图片描述

BFC(块级格式化环境)

  • BFC使一个CSS中的隐藏属性,可以为一个元素开启BFC;为元素开启BFC后,该元素会变成一个独立的布局区域
  • 元素开启BFC的特点:
    – 1、开启BFC的元素不会被浮动元素所覆盖
    – 2、开启BFC的元素子元素和父元素外边距不会重叠
    – 3、开启BFC的元素可以包含浮动的子元素
  • 开启BFC的方式:
    – 1、设置元素的浮动(不推荐)
    – 2、将元素设置为行内块元素(不推荐)
    – 3、将元素的overflow设置为一个非visible的值,
    通常设置为overflow:hidden开启BFC

在这里插入图片描述

clear

  • 作用:清除浮动元素对当前元素所产生的影响
  • 可选值:
    – left 清除左侧元素对当前元素的影响
    – right 清除右侧元素对当前元素的影响
    – both 清除两侧中影响最大的一侧影响
    原理: 设置清除浮动以后,浏览器会自动为元素添加一个上外边距,使该元素不受其他元素的影响。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

clearfix

  • 这个样式可以同时解决高度塌陷和外边距重叠的问题
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
解决代码:

        .clearfix::before,
        .clearfix::after{
            content: '';
            display: table;
            clear: both;
        }

高度塌陷的最终的解决办法(无副作用版本)

1、运用clear解决:
在这里插入图片描述
由于要做一个讲究人,所以CSS的工作就尽量交给CSS。不麻烦HTML所以就有了以下的方法:
2、运用after伪类来解决高度塌陷的问题
在这里插入图片描述

### CSS中`div`元素塌陷问题及其解决方案 #### 外边距塌陷 (Margin Collapse) 当两个垂直方向上的相邻盒子(兄弟关系或者父子关系)之间发生外边距重叠现象时,就会产生所谓的外边距塌陷。对于这种情况,可以通过给父级容器添加 `padding` 或者设定其 `border` 来阻止子元素的顶部或底部外边距与其自身的接触[^1]。 ```css .d4 { padding: 1px; } ``` 通过这种方式,即使存在负向作用力使得内部 div 的上部外边距试图与外部 div 发生合并,由于有了这层内填充的存在,两者之间的距离得以保持稳定而不至于消失不见。 #### 浮动引起的布局塌陷 如果页面内的某些块状元素被设置了浮动属性,则可能会导致包含这些浮动元素的父级容器无法自动扩展以容纳它们的内容,进而造成视觉上的高度丢失——即所谓“高度塌陷”。针对这一情况,一种常见的处理手段是在最后一个浮动元素之后追加一个具有清除效果的新标签;不过更推荐的做法是利用伪类选择器 ::after 实现相同目的而无需引入多余的 HTML 结构[^2]: ```css .clearfix::after { content: ""; display: table; clear: both; } ``` 只需将上述样式应用到需要修正的父级容器即可有效防止因浮动静态定位所引发的高度异常收缩状况。 #### 块级元素嵌套下的内外间距失效 有时会遇到这样的场景:尽管已经为某个位于另一较大范围之内的较小区域指定了特定数值作为上下左右四个方位的距离参数,但实际上却并未按照预期那样呈现出相应的变化趋势。这是因为浏览器默认情况下会对连续排列在一起的一系列空白字符进行压缩处理,从而影响到了实际渲染出来的外观表现形式[^4]。对此可采取如下措施之一加以改善: - **调整盒模型计算方式**:借助于 box-sizing 属性指定应采用何种算法来进行尺寸解析; - **强制断行显示**:通过对目标对象施加 white-space 规则来控制文本流的行为模式; - **移除不必要的空格符**:直接编辑源文件去除那些无意义的空间占位符号。 综上所述,在面对不同类型的 CSS 折叠难题时应当依据具体情况灵活选用恰当的方法予以应对,确保网页设计能够达到理想的效果并具备良好的兼容性稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值