摘要:我们经常写样式的时候会遇到垂直方向重叠的问题,如下代码可以看出由于,应该显示但是只显示,是什么原因呢这就涉及到什么是,解释为块级格式化上下文一个元素要创建,则满足下列的任意一个或多个条件即可的值不是。
我们经常写样式的时候会遇到垂直方向margin重叠的问题,如下代码:
first psecond p
可以看出由于margin-top:20px;margin-bottom:20px,应该显示40px但是只显示20px,是什么原因呢?这就涉及到BFC
什么是BFC:Block Fromatting Context,解释为块级格式化上下文
一个HTML元素要创建BFC,则满足下列的任意一个或多个条件即可:
1、float的值不是none。(float:left 或者float:right)
2、position的值不是static或者relative。(position:absolute或者position:fixed)
3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex
4、overflow的值不是visible(overflow:hidden、overflow:scroll)
5、父元素与正常文件流的子元素(非浮动子元素)自动形成一个BFC
BFC中盒子怎么对齐
在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。
W3C给出得规范是:在BFC中,每一个盒子(子元素)的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)。浮动也是如此(尽管盒子里的行盒子 Line Box 可能由于浮动而变窄)。
正常情况下一个BFC是由父元素和子元素组成的,有时候也只有一个父元素
BFC的特征
(1)所有子元素(包含浮动元素)与容器(父元素)左边对齐
(2)属于同一个BFC的父元素和子元素,相邻的父子或者兄弟间margin垂直方向会重叠,若2个元素属于不同的BFC,则垂直方向不会重叠
(3)可以自动撑开容器(若子元素是float的,父元素设置overflow:hidden,父元素就形成一个BFC)
防止margin重叠我们就可以从BFC的特征入手,让2个相邻的元素不是属于一个BFC
first p
由于class 为second的元素外面套了一个div(一定要套一个div,因为overflow:hidden 是设置在父元素上,里面一定要有子元素),并设置了overflow:hidden,相当于新创建了一个新的BFC, first 与second 属于2个BFC所以margin不会重叠
另一种方法,子元素浮动,浮动相当于新建了BFC,所以不会重叠
first psecond p
相邻的子元素2个都浮动或者下面的一个浮动
更多前端知识请见
微信公众号:前端之攻略
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/117015.html
摘要:当一个内联元素想获得就要使用这个属性。下因为导致的浮动元素与普通元素之间产生代码如下我是浮动元素我是后面的文字,用来测试的正常情况下解决方式加一个的不只是文字,的浮动元素也会和内联元素产生的值。设置属性的元素不和任何元素发生合并。 发现我好久没更新博文了=-=这里把我之前在博客园写过的一篇关于BFC的文章粘贴过来,顺便自己也再次做个总结。 最近看了一篇总结ie常见bug的文章,里面提...
摘要:当一个内联元素想获得就要使用这个属性。下因为导致的浮动元素与普通元素之间产生代码如下我是浮动元素我是后面的文字,用来测试的正常情况下解决方式加一个的不只是文字,的浮动元素也会和内联元素产生的值。设置属性的元素不和任何元素发生合并。 发现我好久没更新博文了=-=这里把我之前在博客园写过的一篇关于BFC的文章粘贴过来,顺便自己也再次做个总结。 最近看了一篇总结ie常见bug的文章,里面提...
摘要:而就潜藏在其中,当你修改样式时,一不小心就能触发它而毫无察觉,因此没有意识到的神奇之处。实例解决侵占浮动元素的问题我们知道浮动元素会脱离文档流,然后浮盖在文档流元素上。 在写样式时,往往是添加了一个样式,又或者是修改了某个属性,就达到了我们的预期。而BFC就潜藏在其中,当你修改样式时,一不小心就能触发它而毫无察觉,因此没有意识到BFC的神奇之处。 一、什么是BFC(Block Form...
阅读 1263·2021-09-23 11:51
阅读 1366·2021-09-04 16:45
阅读 626·2019-08-30 15:54
阅读 2073·2019-08-30 15:52
阅读 1590·2019-08-30 11:17
阅读 3097·2019-08-29 13:59
阅读 2009·2019-08-28 18:09
阅读 378·2019-08-26 12:15