zl程序教程

您现在的位置是:首页 >  其他

当前栏目

〖大前端 - 基础入门三大核心之CSS篇⑮〗- BFC和浏览器差异

基础浏览器前端CSS入门 核心 三大 差异
2023-09-14 09:05:18 时间
  • 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,目前任某金融品类App负责人。
  • 荣誉:2022年度博客之星Top4博客专家认证、全栈领域优质创作者、新星计划导师“星荐官共赢计划” 发起人
  • 现象级专栏《白宝书系列》作者文章知识点浅显易懂且不失深度TFS-CLUB社区创立者旨在以“赋能 共赢”推动共建技术人成长共同体



下面我们了解一个非常重要的概念——BFC规范。


⭐️ BFC规范和浏览器差异

接下来我们就了解一下 BFC规范 吧。


🌟 BFC的基本概念

BFC是一个非常重要的概念!

BFC(Box Formatting Context,块级格式化上下文)是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。

没有形成BFC会出现一些现象,比如一个盒子不设置height,当内容子元素都浮动时, 无法撑起自身:



但是如果子盒子设置了浮动,效果就变成下面这样:



这就是因为父盒子没有形成BFC,所以子盒子从父盒子里面“跑”出来了,会对我们的网页的显示产生不好的影响。


🌟 如何创建BFC?

创建BFC的方法:

  • 方法一:父盒子的float的值不是none
  • 方法二:position(定位)的值不是static或者relative
  • 方法三:display的值是inline-block、flex或者inline-flex
  • 方法四:overflow: hidden;

我们依次介绍这几种方法。(方法二的定位和方法三中的flex、inline-flex后面才学到,这里先不做介绍。)

方法一:父盒子设置浮动。这种方法不靠谱,因为父盒子也要根据需求来设置浮动的,不能平白无故的给它设置个浮动。



方法三:display属性设置成inline-block。这种方式也不太靠谱,我们的父盒子本来是块级元素,也不能平白无故的给它设置成行内块。



方法四:设置overflow: hidden;表示溢出隐藏,溢出盒子边框的内容将会被隐藏。

overflow: hidden;是非常好用的使盒子形成BFC的方法。



注意:overflow:hidden;是使溢出盒子“边框”的部分被隐藏,padding部分还是会覆盖的,下面看个例子:




🌟 BFC的其他作用

  • BFC可以取消盒子margin塌陷
  • BFC可以阻止元素被浮动元素覆盖

⭐️ 浏览器差异

IE6IE7浏览器使用haslayout机制,和BFC规范略有差异,比如IE浏览器可以使用zoom:1属性,让盒子拥有layout(布局规范)。

如果要制作兼容到IE6\7的网页时,尽量让网页布局变得简单,内容有浮动的盒子要设置height属性,规范编程,不要“玩杂技”。