css解决高度塌陷问题

更新日期: 2021-05-04 阅读: 1.9k 标签: 高度

问题概述:

父元素在文档流中高度默认是被子元素撑开的,当子元素脱离文档流以后,将无法撑起父元素的高度,也就会导致父元素的高度塌陷

父元素的高度一旦塌陷所有元素的位置将会上移,导致整个页面的布局混乱


方法1 开启父元素的BFC或hasLayout

1.1 BFC

1.1.1 Block Formatting Context-块级格式化环境

1.1.2 BFC是元素的隐含属性,默认是在关闭状态的

1.1.3 可以通过一些特殊的样式,来开启BFC

1.1.4 开启BFC以后元素将会具有如下特性

1.1.4.1 父元素的垂直外边距不会与子元素重叠

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

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

1.1.5 开启BFC的方式

1.1.5.1设置元素浮动

1.1.5.2设置元素绝对定位

1.1.5.3设置元素的类型为inline-block

1.1.5.4设置overflow为一个非默认值,一般都是使用overflow:hidden来开启BFC

1.2 hasLayout

1.2.1 在IE6中没有BFC,但是有一个和BFC类似的hasLayout

1.2.2 在IE6中可以通过开启hasLayout来解决高度塌陷的问题

1.2.3 副作用最小的开启方式为设置-zoom:1,当为元素设置宽度非默认值时,会自动开启hasLayout

.clearfix{
    zoom:1;
}

方法2 添加一个空白的div

2.1 在塌陷的父元素的最后添加一个空白的div,然后对该div进行清除浮动

<div>
    <div></div>

    <div></div>
</div>

2.2 使用这种方式会在页面中添加多余的结构


方法3 使用after伪类(推荐)

3.1 使用after伪类,向父元素后添加一个块元素,并对其清除浮动

.clearfix:after{
    content:"";
    display:block;
    clear:both;
}

.clearfix{
    zoom:1;
}

3.2 该种方式的原理和方法2原理一样,但是不用向页面中添加对于的结构


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/10268

CSS 使用calc()获取当前可视屏幕高度

先了解一下CSS3的相对长度单位:相对长度单位指定了一个长度相对于另一个长度的属性。对于不同的设备相对长度更适用,通过vh / vw 我们可以获得当前屏幕的视窗宽度

JS获取display为none的隐藏元素的宽度和高度的解决方案

有时候,我们一进入页面,就需要获取display为none元素的物理尺寸(宽高),或获取display为none元素的子元素的物理尺寸(宽高),本篇文章就如何解决以上问题给出自己的解决方案,获取display为none元素的子元素的物理尺寸

CSS解决高度塌陷

给高度塌陷的元素设置overflow:hidden;原理:因为overflow:hidden;触发了一个BFC,BFC布局规则:计算BFC高度的时候,里面的浮动元素也参与计算。弊端:定位在当前元素外面的内容会被隐藏。

高度自适应

高度不去设置,或者高度设置auto 内容撑开父元素的高度。内容撑开父元素的高度 -> 最小高度的设置 min-height,浮动元素添加高度自适应 -> 添加浮动元素的父元素没有高度,会出现高度塌陷

如何动态监听 DOM 元素高度变化?

在我们的网页中有一个固定区域,这个区域会用于渲染从后端拉取的含有图片等资源的富文本字符串。他需要在内容不超过一个最大高度的时候完全显示所有内容,超过最大内容后仅展示最大高度范围内的内容

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!