BFC和IFC以及双边距bug和边距塌陷(折叠)问题

20 篇文章 2 订阅

BFC


BFC(Block Formatting Context)叫做“块级格式化上下文"
布局规则如下:
1.内部的盒子会在垂直方向,一个个地放置;
2.盒子垂直方向的距离由margin决定, 属于同一个BFC的两个相邻Box的上下margin会发生重叠;
4.BFC的区域不会与float重叠;
5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之也如此;
6.计算BFC的高度时,浮动元素也参与计算。

介绍过了BFC的布局规范,再来说说哪些元素会产生BFC。
     1.根元素;
     2.float的属性不为none;
     3.position为absolute或fixed;
     4.display为inline-block,table-cell,table-caption,flex;
     5.overflow不为visible

 


IFC


IFC(inline Formatting Context)叫做“行级格式化上下”
局规则如下:
    1.内部的盒子会在水平方向,一个个地放置;
    2.IFC的高度,由里面最高盒子的高度决定;
    3.当一行不够放置的时候会自动切换到下一行;

 

双边距bug

出现双边距的条件是当浮动元素的浮动方向和margin的方向一致时才会出现。也就是说,并不是只有块状元素左浮动,且具有左外边距时才有这个BUG,当一个盒子右浮动的同时有一个向右的margin-right的时候,IE6也会把margin-right解析为原来的2倍。当有多个同行元素都浮动了,而且都有同方向的margin,则只有最靠近浮动方向的元素有双边距bug。

css双边距bug
 

两个块级元素分别加上margin-top和margin-bottom只取最大值

 

给一个div加上margin-bottom:100px另一个加上margin-top:200px 问这两个相距多少px?

  取值大的答案是200px.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 200px;height: 200px;
            background: #198;
        }
    </style>
</head>
<body>
<div style="margin-bottom: 100px"></div>
<div style="margin-top: 200px;"></div>
</body>
</html>

很明显,两个div之间的距离只有200px;这是w3c规定的,但是这有什么意义呢?
当然有意义,比如几个段落,p标签是有默认margin 的,谷歌是16px,将两个边距合并,每个段落的边距就都是一样了。
当然,只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。
————————————————
原文链接:https://blog.csdn.net/zfz5720/article/details/79917272

 

HTML:margin塌陷现象的解决

设置子元素的margin,父元素也具有与子元素相同的margin值,称之为塌陷现象。这种现象我们称之为margin的塌陷现象。具体说就是子类标签设置margin-top:50px;时,不是子类标签距离父类标签上边框50像素。而是子类标签和父类标签距离上级标签50个像素。

解决方案:

   方法一:在父类标签设置overflow:hidden;属性

   方法二:给父类标签设置border属性即可。 

  方法三:给父元素定位也可以(position属性)

margin塌陷问题

 

总结:

这些问题面试经常会问到,所以记录一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值