美文网首页
面试题目自己答

面试题目自己答

作者: 等花开_8e16 | 来源:发表于2018-07-18 17:18 被阅读0次

最近面试较多,但其实很多内容自己也不太会,所以有了自问自答的环节。
a.什么是BFC
浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。
一个HTML元素要创建BFC,则满足下列的任意一个或多个条件即可:
1、float的值不是none。
2、position的值不是static或者relative。
3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex
4、overflow的值不是visible
BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。
b.怎样创建 BFC
要显示的创建一个BFC是非常简单的,只要满足上述4个CSS条件之一就行。例如:
<div class="container"> 你的内容 </div>
在类container中添加类似 overflow: scroll,overflow: hidden,display: flex,float: left,或 display: table 的规则来显示创建BFC。虽然添加上述的任意一条都能创建BFC,但会有一些副作用:
1、display: table 可能引发响应性问题
2、overflow: scroll 可能产生多余的滚动条
3、float: left 将把元素移至左侧,并被其他元素环绕
4、overflow: hidden 将裁切溢出元素
因而无论什么时候需要创建BFC,都要基于自身的需要来考虑。对于本文,将采用 overflow: hidden 方式:
.container {overflow: hidden;}
c.BFC可以做什么呢?
1.BFC可能造成外边距折叠,也可以利用它来避免这种情况。BFC产生外边距折叠要满足一个条件:两个相邻元素要处于同一个BFC中。所以,若两个相邻元素在不同的BFC中,就能避免外边距折叠。
html:
<div class="container"> <p>Sibling 1</p> <p>Sibling 2</p> <div class="newBFC"> <p>Sibling 3</p> </div> </div>
css:
.container { background-color: red; overflow: hidden; /* creates a block formatting context */ } p { margin: 10px 0; background-color: lightgreen; } .newBFC { overflow: hidden; /* creates new block formatting context */ }

margin.png
2.BFC包含浮动
浮动元素是会脱离文档流的(绝对定位元素会脱离文档流)。如果一个没有高度或者height是auto的容器的子元素是浮动元素,则该容器的高度是不会被撑开的。我们通常会利用伪元素(:after或者:before)来解决这个问题。BFC能包含浮动,也能解决容器高度不会被撑开的问题。 float.png
3.使用BFC避免文字环绕
float-around.png
<div class="container"> <div class="floated"> Floated div </div> <p> Quae hic ut ab perferendis sit quod architecto, dolor debitis quam rem provident aspernatur tempora expedita. </p> </div>
因而,如果p元素创建一个新的BFC那它就不会再紧贴包含块的左侧了。
4.在多列布局中使用BFC
如果我们创建一个占满整个容器宽度的多列布局,在某些浏览器中最后一列有时候会掉到下一行。这可能是因为浏览器四舍五入了列宽从而所有列的总宽度会超出容器。但如果我们在多列布局中的最后一列里创建一个新的BFC,它将总是占据其他列先占位完毕后剩下的空间。
html:
<div class="container"> <div class="column">column 1</div> <div class="column">column 2</div> <div class="column">column 3</div> </div>
css:
.column { width: 31.33%; background-color: green; float: left; margin: 0 1%; } /* Establishing a new block formatting context in the last column */ .column:last-child { float: none; overflow: hidden; }
现在尽管盒子的宽度稍有改变,但布局不会打破。当然,对多列布局来说这不一定是个好办法,但能避免最后一列下掉。这个问题上弹性盒或许是个更好的解决方案,但这个办法可以用来说明元素在这些环境下的行为。

相关文章

  • 面试题目自己答

    最近面试较多,但其实很多内容自己也不太会,所以有了自问自答的环节。a.什么是BFC浮动元素和绝对定位元素,非块级盒...

  • 调用一个实例方法jvm竟然都为我们做了这些!

    1.前言 这是最近面试腾讯日常实习的一个面试题,自己答得不是很好,故重新分析下。 题目:java的内存模型有了解过...

  • 面试总结

    这篇文章主要总结在近期面试中遇到的答不上来或者答不完整的问题。题目都是自行查阅整理,不知道是不是面试官想要的答案。...

  • 一次前端面试分享

    昨天参加了某公司的面试,整个面试体验是极好的,面试官超级nice,讲话很温和也很有耐心,我答不上来的题目会给我不断...

  • 荔枝fm前端面试题

    来到首先就是笔试做题,然后面试官针对题目问你解题思路。面试官也会现场出一些题目让你答,主要是对js\css基础知识...

  • Unity面试题精选(1)

    洪流学堂,让你快人几步。 今天整理了一些Unity面试题目,希望可以帮助到你。 面试官:TCP和UDP的区别 答:...

  • Unity面试题精选(2)

    洪流学堂,让你快人几步。 今天整理了一些Unity面试题目,希望可以帮助到你。 面试官:抽象类和接口的区别? 答:...

  • Swift面试题

    一.卓同学的 Swift 面试题答 《卓同学的 Swift 面试题》答《卓同学的 Swift 面试题》上答《卓同学...

  • 2019-03-08

    紧张,焦虑 只要一想起要去面试,就感到十分焦虑 明天的面试还好,今天晚上想一想老师会问什么题目,要怎么答就好 然后...

  • 答卓同学的iOS面试题

    答卓同学的iOS面试题 答卓同学的iOS面试题

网友评论

      本文标题:面试题目自己答

      本文链接:https://www.haomeiwen.com/subject/lefapftx.html