Xin's blog Xin's blog
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
    • Vue
    • 组件与插件
    • CSS扩展语言
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架面试题汇总
  • 基本面试题
  • 进阶面试题
  • 其它
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 前后端联调
  • mock.js
  • 奇技淫巧
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

Xin

英雄可不能临阵脱逃啊~
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
    • Vue
    • 组件与插件
    • CSS扩展语言
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架面试题汇总
  • 基本面试题
  • 进阶面试题
  • 其它
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 前后端联调
  • mock.js
  • 奇技淫巧
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • HTML

  • CSS

    • 知识点

      • CSS教程和技巧收藏
      • CSS单位
      • CSS选择器
      • CSS函数
      • CSS属性
      • CSS3之transition过渡
      • CSS3之transform
      • CSS3之animation动画
      • CSS3 filter 和 backdrop-filter
      • CSS3 resize属性
      • CSS3的遮罩(mask)
      • flex布局语法
      • font-size:0的作用和用途
      • CSS 高度塌陷问题
        • 什么是BFC
        • 因为设置float后导致的塌陷
        • margin合并的问题
      • 从box-sizing属性入手,了解盒子模型
      • CSS-function汇总
    • 案例

  • JavaScript

  • Vue

  • 组件与插件

  • css扩展语言

  • 学习笔记

  • 前端
  • CSS
  • 知识点
ctrlwin
2021-08-02

CSS 高度塌陷问题

# CSS 高度塌陷问题

# 什么是BFC

页面中元素都有一个隐藏的属性Block Formatting Content块级格式化上下文(简称BFC)

具有bfc的元素我们可以抽象的理解成为隔离了的独立容器

那这个隐藏的属性我们如何触发(开启)呢?

满足下面任一条件即可:

  • 浮动元素 float属性值为除了none以外的值

  • 绝对定位元素 position 为 absolute、fixed

  • display为inline-block、table-cell、table-caption

  • overflow为 hidden、auto、scroll

bfc的三个特性:

  • 阻止外边距折叠
  • 可以包含浮动的元素
  • 可以阻止元素被浮动元素覆盖

# 因为设置float后导致的塌陷

代码示例:

.fudong{
    border:10px solid red;
}
.fudong .child1{
    width:100px;
    height:100px;
    background-color: yellow;
    float:left;
    margin-bottom: 100px;
}
1
2
3
4
5
6
7
8
9
10

网页效果:

从图中可以看到,我们给子元素设置margin-bottom后,并没有将父元素撑开。

根据上面BFC的定义,我们可以根据规则触发BFC,这样父元素就可以被撑开了。

例如,给父元素设置overflow: hidden后:

# margin合并的问题

对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。

代码示例:

.father{
    background-color: slateblue;
    margin-top: 20px;
}
.father .child{
    width:100px;
    height:100px;
    background-color: yellow;
    margin-top: 10px;
}
1
2
3
4
5
6
7
8
9
10

网页效果:

从上图中可以看到,子元素设置了margin-top后,并没有撑开父元素,那应该怎么办呢?

解决办法如下:

  • 为父元素定义边框
  • 为父元素定义内边距
  • 为父元素添加overflow:hidden

例如,给父元素添加内边距后:

在GitHub上编辑 (opens new window)
#css
上次更新: 2/23/2022, 5:36:03 PM

← font-size:0的作用和用途 从box-sizing属性入手,了解盒子模型→

最近更新
01
createElement函数创建虚拟DOM
05-26
02
clipboard 剪切板属性
05-26
03
vue的权限管理
05-16
更多文章>
Theme by Vdoing | Copyright © 2021-2022 Xin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×