前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

BFC

作者头像
bamboo
发布2019-01-29 16:06:42
8780
发布2019-01-29 16:06:42
举报
文章被收录于专栏:bamboo前端学习记录

一:BFC (Block Formatting Context)定义

BFC 全称 Block Formatting Context,翻译块级格式化上下文。BFC 可以看作是隔离了的独立容器(渲染区域),容器里面的元素不会在布局上影响到外面的元素,相当于建立一个隐形的边界

前提:每个渲染区域用formatting context表示,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。在正常流中的盒子要么属于块级格式化上下文,要么属于内联格式化上下文。

二、BFC 的产生

  • 根元素;
  • float属性不为none;
  • position为absolute或fixed;
  • display为inline-block, flex, 或者inline-flex;
  • overflow不为visible(可视的);

三、特性

BFC(块级格式化上下文)对块级元素在渲染的过程中遵循布局的规则: 1、内部的Box会在垂直方向,一个接一个地放置。

2、Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠每个元素的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

3、BFC的区域不会与float box重叠。 4、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。 5、计算BFC的高度时,浮动元素也参与计算。

四、应用

1、margin 合并

下图1 header和body之间出现较大间隙的原因是:h1里面有外边距,和header的外边距合并了

clipboard.png
clipboard.png

但给header构建一个BFC之后,外边距就不合并了。剩下的一点间隙是body的margin。

clipboard.png
clipboard.png

把body的margin取消之后,间隙就消失了

clipboard.png
clipboard.png

总结:(1)构建BFC是阻止外边距合并的方法之一(虽然加边框和padding也可以实现外边距合并)

(2)使用overflow:hidden,超出内容会被隐藏,所以使用要慎重

2、contain float,包裹浮动元素 先设置li为浮动,可以发现nav的高度是没有被撑开的。

clipboard.png
clipboard.png

当给nav形成一个bfc,nav的高度就被撑开了。计算BFC高度的时候,是包括浮动元素的

clipboard.png
clipboard.png

也可以通过浮动,来形成BFC.但如果只是为了撑开父元素,设置浮动是很不明智的。

clipboard.png
clipboard.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:BFC (Block Formatting Context)定义
  • 二、BFC 的产生
  • 三、特性
  • 四、应用
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档