BFC的理解

3 篇文章 0 订阅

BFC[Block Format Context]: 块级格式上下文

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

margin边距-塌陷

  • 边距为正,取最大值
  • 边距为负,取绝对值最大
  • 边距一正一负,取和
    原因: 在同一个BFC中,所以重叠
    解决思路: 修改容器为单独的BFC

垂直方向塌陷

<style type="text/css">
	.top {
		width: 200px;
		height: 200px;
		background: black;
		margin: 20px;
	}
	.bottom {
		width: 100px;
		height: 100px;
		background: red;
		margin: 30px;
	}
</style>
<body>
	<div class="top"></div>
	<div class="bottom"></div>
</body>
  • 例子中,两个盒子间距为30px。取间距最大值,发生重合。
    在这里插入图片描述
解决方法:
1. 改变BFC环境: 嵌套一层,使不在同一个上下文环境中。
	`<div class="bottom-box"><div class="bottom"></div></div>`
	`.bottom-box{ position: absolute; }`
2. 修改display属性: `.bottom { display: inline-block; }`
3. 修改float属性: `.bottom { float: left; }`
- overflow 不可以解决此问题; 可以解决嵌套的塌陷.

嵌套塌陷

<style type="text/css">
	.box {
		width: 100%;
		height: 300px;
	}
	.top {
	float: left;
		width: 200px;
		height: 200px;
		background: black;
		margin: 20px;
	}
</style>
<body>
	<div class="box">
		<div class="top"></div>
	</div>
</body>
解决方法:
1. 外层盒子添加 overflow 非visible的属性
2. 添加 display: inline-block; (block不行)
3. 添加 float: left; 不为none都可以

水平方向塌陷

<style type="text/css">
	.box {
		width: 100%;
		height: 300px;
	}
	.top {
		float: left;
		width: 200px;
		height: 200px;
		background: black;
		margin: 20px;
	}
	.bottom {
		overflow: hidden; /** 这里添加 overflow 会导致边距重叠 */
		width: 100px;
		height: 100px;
		background: red;
		margin: 30px;
	}
</style>
<body>
	<div class="box">
		<div class="top"></div>
		<div class="bottom"></div>
	</div>
</body>
解决方式:
1. 删除overflow属性, 增加float: left;
2. 删除overflow属性, 增加display: inline-block;(inline-block使每个div变成单独的BFC)

水平方向塌陷 - 引申的自适应两栏布局

  • 上面的例子中, overflow 导致边距重叠; 但是有清除浮动的作用.
  • 但是会水平自适应两栏布局, 删除会导致两个box重叠覆盖(清除浮动)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值