【每日一题】-2021-02-01-CSS题目

121 阅读3分钟

大家好!我是一个职场小菜鸟~

我尽量坚持每天更新一道面试题,监督自己也分享知识!

今天是2月份的第一天!坚持就是胜利!

先来一波碎碎念

大家可以关注我的公众号,掘金可能不会每天更新,如果某天工作太忙了,就只更新公众号啦!

好啦来看看 2月份的第一道题目吧

题目来咯

说说 BFC 如何触发 有什么应用场景?

康康思路

一般这样的题目面试官考察的是我们对css的基础的理解,看看我们在开发过程中对布局的思考,对css的设计等一些基本功的操作。

今天的问题主要就是释义,直接看答案吧!

康康答案

图片什么是BFC?

  • 块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

  • 块格式化上下文包含创建它的元素内部的所有内容

  • 块格式化上下文对浮动定位与清除浮动都很重要。

  • 浮动定位和清除浮动时只会应用于同一个BFC内的元素。浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。外边距折叠(Margin collapsing)也只会发生在属于同一BFC的块级元素之间。

图片那么什么情况会触发BFC呢? 满足下列条件之一就可触发BFC

  • 根元素,即HTML

  • float的值不为none(both,left,right)

  • overflow的值不为visible(hidden,auto,scroll)

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

  • position的值为absolute或fixed  

图片那么BFC的布局规则是什么呢?

  • 内部的Box会在垂直方向,顺序放置。

  • Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠

  • 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

  • 和float元素区域分割开,BFC的区域不会与float区域重叠。

  • 是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

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

图片那么BFC有什么作用呢?或者说应用场景

  • 清除浮动

  • 消除margin重叠

  • 布局

下面举一个例子来看看【清除浮动】的具体场景吧

// 清除浮动
<div class="container-box">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
    <div class="box4"></div>
</div>

.container-box {
    position: fixed; /*为了创建BFC环境*/
    background: #ccc;
}
div {
    height: 30px;

}
.box1 {
    width: 300px;
    background: pink;
}
.box2 {
    width: 250px;
    background: green;
}
.box3 {
    width: 200px;
    background: red;
    float: left;
}
.box4 {
    width: 150px;
    height: 40px;
    background: blue;
}

我们肯定能看到结果是:

  • div均为垂直方向

  • 浮动-box3也是垂直方向,且没超过前两个div元素

  • 虽然box3超过前两个元素,但是box4位置顶上去了,占了box3的位置,所以看起来box4高变小了

  • 所有子div都是左对齐

剩下的两项大家可以自己试一下,可以把答案反馈给我哟!期待大家的反馈!(也算今天的一个小任务吧!)

关注我的公众号- 点点web ,每天坚持进步!