CSS实现中间自适应的三栏布局,共4种方法

本文介绍了使用CSS实现中间自适应的三栏布局的四种方法:float布局、position定位、双飞翼布局和弹性布局。详细解析了每种方法的HTML结构和CSS样式,包括双飞翼布局与圣杯布局的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、float实现

html结构:

<div class="left"></div>
<div class="right"></div>
<div class="center"></div>
css:

.left,.right{
	width: 200px;
	height: 300px;
	background-color: red;
}
.left{
	float: left;
}
.right{
	float: right;
}
.center{
	margin: 0 210px;
	height: 300px;
	background-color: blue;
}
这种实现受外界影响小,但是对html结构有要求(center必须放在最后,left与right则无所谓),当界面缩小到一定程度时,right会被挤到下一行


二、position实现

html结构:

<div class="left"></div>
<div class="right"></div>
<div class="center"></div>

css:

.left,.right{
	position: absolute;
	width: 200px;
	height: 300px;
	background-color: yellow;
}
.left{
	left: 0;
}
.right{
	right: 0;
}
.center{
	margin: 0 210px;
	height: 300px;
	background-color: blue;
}
该法布局的好处,三个div顺序可以任意改变。不足是 因为绝对定位,所以如果页面上还有其他内容,top的值需要小心处理,最好能够对css样式进行一个初始化,如果不对样式进行初始化,则两边和中间的值会对不齐。 另外,随着浏览器窗口缩小,小于200px的时候,会发生重叠。摘自: http://blog.youkuaiyun.com/cinderella_hou/article/details/52156333


三、双飞翼布局

双飞翼布局与圣杯布局很像,关于二者差异,知乎上说的还蛮清楚的:CSS布局中圣杯布局与双飞翼布局的实现思路差异在哪里?

html结构:

<div class="center-wrapper">
	<div class="center">center</div>
</div>
<div class="left">left</div>
<div class="right">right</div>
css:

.center-wrapper,.left,.right{
	float: left;
}
.center-wrapper{
	width: 100%;
	height: 300px;
	background: pink;
}
.left{
	width: 200px;
	height: 300px;
	margin-left: -100%;
	background-color: orange;
}
.right{
	width: 200px;
	height: 300px;
	margin-left: -200px;
	background-color: red;
}
.center{
	margin: 0 210px;
	height: 300px;
	background-color: blue;
}
这种方式有点复杂,其实就是通过把center-wrapper、left、right设为向左浮动,再通过margin将left和right调整到一行的指定位置上,这时left和right会覆盖住center,再通过center的margin将自己缩到中间(同float、position实现中的center的margin)。

html结构固定,center必须放到最前面,且需要wrapper包裹。


四、弹性布局实现

html结构:

<div class="box">
	<div class="left">left</div>
	<div class="center">center</div>
	<div class="right">right</div>
</div>
css:

.box{
	display: flex;
	width: 100%;
}
.left,.right{
	flex: 200px 0 0;
	/*width: 200px;*/
	height: 300px;
	background-color: yellow;
}
.center{
	flex: 1;
	background-color: pink;
}

这种方式看着要简练的多,需要了解弹性布局的推荐阮一峰博客 Flex布局教程-语法篇




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值