margin-bottom负值实现多列等高布局

什么是多列等高布局?

经常会有这样的需求,一个父容器中,存在多列子容器,这些子容器的高度是不固定的,正常情况下,父容器的高度会随着其子容器最高的那个容器的高度而变化伸缩,但其它子容器的高度并不会变化,导致如下结果


显然,这并不是我们想要的,我们需要左侧和右侧的高度共同变化,这时,就可以使用margin-bottom负边距实现

padding补偿法

首先,给子容器设置padding-bottom值,一个足够大的值,然后,再设置其margin-bottom等于负的padding-bottom的值,相互抵消,父容器设置overflow:hidden,这样,任意一个子容器的高度增加,会把父容器撑开到最高那列的高度,其它比这列矮的子容器会通过padding-bottom来补偿这部分的高度差,因为背景和边框都是随着padding变化的,所以该方案可以实现一个障眼法,当然,注意根据业务需求设置一个足够大的值

参考代码

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title></title>
	<style>
		*{margin: 0; padding: 0;}
		.box-1{width: 600px; border: 1px solid red; margin-top: 100px; margin-left: 100px; overflow: hidden;}
		.box-1 .box-1-left{width: 25%; float: left; background-color: blue; padding-bottom: 300px; margin-bottom: -300px;}
		.box-1 .box-1-right{width: 75%; float: right; background-color: green; padding-bottom: 300px; margin-bottom: -300px;}
	</style>
</head>
<body>
	<div class="box-1">
		<div class="box-1-left">
			kkkkkkkkk
		</div><!--box-1-left-->
		<div class="box-1-right">
			kkkkkkkkkkkk<br><br><br>kkkkkkkkkkkkk<br><br><br><br><br><br>kkkkkkkkkkk
		</div><!--box-1-right-->
	</div><!--box-1-->
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值