实现左边宽度固定,右边宽度自适应的两列布局

本文介绍了使用CSS实现固定宽度左侧栏与自适应宽度右侧栏的布局方法,包括浮动、绝对定位及table-cell布局等三种常见解决方案。

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

最近面试被问到一个问题,感觉还挺经典,但由于脑子短路回答的不是很好。面试过后,在此简单总结一下这个问题的答案,如果下次遇到可以能回答的好一点。

问题就是:实现一个两列布局,要求左边宽度固定,右边宽度自适应,利用CSS如何实现?


一些解决办法:

1.左侧浮动,右侧不设定宽度

浮动就使元素脱离标准文档流,所以会使两个元素在一行显示,但要注意右侧元素的左边缘是挨着父元素的左边缘的,而非是左侧元素的右边缘。所以可以为右侧元素设置margin-left,值为左侧元素的宽度,或者为右侧元素设置overflow:hidden

.left{
	float:left;
	width:200px;
	height:100px;
	background:#0FF;
}
.right{
        overflow:hidden;/*或者margin-left:200px*/
	height:100px;
	background:#CF0;
}
<div class="parent">
    <div class="left"></div>
    <div class="right"></div>
</div>

2.左侧使用绝对定位,右侧设定margin
左侧元素使用绝对定位,脱离标准文档流,但要注意和浮动相同的问题,左侧元素使用绝对定位,右侧元素的左边缘会挨着父元素的边缘,所以此时要为右侧元素设定margin-left,而这个值则为左侧元素的宽度。

.left{
	position:absolute;
	width:200px;
	height:100px;
	background:#0FF;
}
.right{
	margin-left:200px;
	height:100px;
	background:#CF0;
}
<div class="parent">
    <div class="left"></div>
    <div class="right"></div>
</div>

3.为父元素设置display:table和width,然后为左侧元素和右侧元素设置display:table-cell
但要注意IE7及以下版本不支持此方法

.parent{
	display:table;
	width:800px;
}
.left{
	display:table-cell;
	width:200px;
	height:100px;
	background:#0FF;
}
.right{
	display:table-cell;
	height:100px;
	background:#CF0;
}
<div class="parent">
    <div class="left"></div>
    <div class="right"></div>
</div>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值