高度塌陷的产生条件

  • 子元素浮动,脱离文档流
  • 子元素绝对定位或固定定位,脱离文档流

定位产生的高度塌陷只能通过加固定高度或更换其他方案解决塌陷,本文主要讨论浮动产生塌陷的解决方法。

高度塌陷的解决方法

1、直接给父元素加高度

    div{
border: 5px solid black;
height: 200px;
}
p{
width: 200px;
height: 200px;
background-color: aqua;
float: left;
}

优点:代码简单,容易理解

缺点:自适应性不强

建议:不建议使用

2、利用clear:both;声明

2-1 在所有子元素的最后添加块元素,声明clear:both;

	div{
border: 5px solid black;
}
p{
width: 200px;
height: 200px;
background-color: aqua;
float: left;
}
span{
display: block;
border: 5px solid red;
clear: both;
}
<div>父元素div
<p>子元素p</p>
<span></span>
</div>

原理:clear:both清除span两边的浮动,让父级div能自动获取到高度

优点:简单,代码少,所有主流浏览器都支持clear属性

缺点:不易理解,添加空白元素造成代码冗余

建议:不建议使用

2-2 万能清除法

        .clearall {
/* 可以解决IE6、IE7、IE8浏览器兼容问题 */
zoom: 1;
} .clearall::after {
/* 3个核心声明 起到方法2-1相似作用*/
content: "";
display: block;
clear: both;
/* 3个附属声明 解决一部分浏览器兼容问题 */
height: 0;
overflow: hidden;
visibility: hidden;
}
<div class="clearall">父元素div
<p>子元素p</p>
</div>

原理:给父元素设置clearall类,赋予其一个::after伪元素,该元素达到与方法2-1类似的效果

优点:可以作为公共类,方便使用,兼容性好

缺点:代码多,不易初学者理解

建议:建议使用,建议定义公共类,以减少CSS代码

3、利用BFC特性

  • BFC(Block formatting context)直译为块级格式化上下文,他有这样一个特性:

    计算BFC的高度时,浮动元素也参与计算

    将父元素触发为BFC即可解决浮动造成的高度塌陷

  • 元素触发BFC的条件

    1. html标签为BFC
    2. float属性值不为none
    3. overflow属性值不为visible
    4. display属性值为inline-block、table-cell、table-caption、flex、inline-flex其中之一
    5. position属性值为absolute或fixed

3-1 给父元素也添加浮动声明

        div {
border: 5px solid black;
float: left;
} p {
width: 200px;
height: 200px;
background-color: aqua;
float: left;
}

父元素成为浮动元素,脱离文档流:

3-2 更改父元素的overflow属性为hidden/auto/scroll

overflow: hidden;

 超出内容会被隐藏:

overflow:auto;

元素内容超出容器会出现滚动条:

overflow:scroll;

父元素出现滚动条:

3-3 更改父元素的display属性触发BFC

display: inline-block;
display: table-cell;

display: table-caption;

display: flex;

display: inline-flex;

3-4 更改父元素的position属性为absolute或fixed

position: absolute;
position: fixed;

父元素会脱离文档流。

总结

由以上可知,解决高度塌陷的方法有很多,选择适合当前布局效果的方法才是最重要的。

一般无特殊情况,推荐选择使用兼容性好用起来方便的万能清除法

高度塌陷与BFC的更多相关文章

  1. 整理高度塌陷与BFC

    当面试官问道你高度塌陷时,人们第一想到的方法一定是 .clearfix::after { content: ''; display: block; clear: both; visibility: h ...

  2. 高度塌陷与 BFC

    1. 高度塌陷 在浮动布局中,父元素的高度默认是被子元素撑开的  当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离将会无法撑起父元素的高度,导致父元素的高度丢失  父元素高度丢失以后,其下的元 ...

  3. 加overflow-hidden就可以解决高度塌陷问题,overflow-触发BFC

    1.BFC 全称是块级排版上下文,用于对块级元素排版,默认情况下只有根元素(body)一个块级上下文,但是如果一个块级元素 设置了float:left,overflow:hidden或position ...

  4. 浅谈BFC与高度塌陷

    这个概念我大概是去年时候接触到的吧,略略记录了一下,没有深入研究,恰逢最近秋招,在这里写一写,顺便加深自己的印象. 什么是BFC? 页面中的元素都隐含一个属性Block Formatting Cont ...

  5. 浮动引发的高度塌陷问题及其解决方法(BFC相关概念及性质)

    浮动引发的高度塌陷问题 高度塌陷问题的产生 BFC(Block Formatting Context)的引入 元素开启BFC后的特点 开启BFC的元素不会被其他浮动元素所覆盖 开启BFC的元素不会发生 ...

  6. __x__(29)0908第五天__高度塌陷 问题

    高度塌陷 在文档流中,父元素的高度默认是被子元素撑开的. 但是当为 子元素 设置 float 时,子元素会完全脱离文档流,无法再撑开父元素,导致父元素高度塌陷...以致于布局混乱 变成 BFC块级格式 ...

  7. css关于浮动的高度塌陷

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. css之高度塌陷及其解决方法

    浅谈 清除浮动 的多种方式(clearfix) 1.什么是浮动 ? 是否脱离文档流? 1.普通流定位 static(默认方式) 普通流定位,又称为文档流定位,是页面元素的默认定位方式 页面中的块级元素 ...

  9. CSS高度塌陷问题解决方案

    高度塌陷的存在:原因分析 1 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...

随机推荐

  1. CodeForces 3 D.Least Cost Bracket Sequence【贪心+优先队列】

    Description 给出一个括号序列,中间有一些问号,将第i个问号换成左括号代价是a[i],换成右括号代价是b[i],问如果用最少的代价将这个括号序列变成一个合法的括号序列 Input 第一行一个 ...

  2. 【floyd+矩阵乘法】POJ 3613 Cow Relays

    Description For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a rel ...

  3. Python进阶之浅谈内置方法(补充)

    目录 列表类型的内置方法 元组类型的内置方法 字典类型的内置方法 集合类型的内置方法 列表类型的内置方法 1.作用:描述名字,说的话等 2.定义方式 s=['tim','age'] s=str('ti ...

  4. MySQL 百万级数据量分页查询方法及其优化

    方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺 ...

  5. C++ ACE 动态加载链接库

    添加头文件 #include <ace/DLL.h> #include <ace/DLL_Manager.h> 定义函数接口 typedef long (*PFN_TEST)( ...

  6. Android 伤敌一千自损八百之萤石摄像头集成(二)

    本章主要是结合webview展示直播 app负责配网展示设备 加载webview播放 不介绍别的只说集成,至于APP_KEY.accessToken怎么获取的不予解释,官网都有 获取WiFi名称 这里 ...

  7. 大厂前端带来css3动画transition的使用和介绍全新认识动画

    CSS3中可以使用transition来做最简单动画效果,transition表示到一个元素的属性值发生变化时,我们可以看到页面元素从旧的属性慢慢变化为新的属性值的过程,这种效果不是立即变化的,而是体 ...

  8. 富文本编辑器实现从word中复制图片(外挂)

    1问题 基于web的富文本编辑器的功能普遍较弱,而word是公认的宇宙第一好用的文档编辑器,所以许多人都习惯先在word中编辑,然后再将内容粘到web富文本编辑器中. 但是,这种操作有一个问题:图片带 ...

  9. POJ 3057 Evacuation 题解

    题目 Fires can be disastrous, especially when a fire breaks out in a room that is completely filled wi ...

  10. NOIP 2016 D2T2 蚯蚓](思维)

    NOIP 2016 D2T2 蚯蚓 题目大意 本题中,我们将用符号 \(\lfloor c \rfloor⌊c⌋\) 表示对 \(c\) 向下取整,例如:\(\lfloor 3.0 \rfloor = ...