CSS实现左侧固定,右侧自适应布局


网页基本结构:

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="renderer" content="webkit">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>左侧固定,右侧自适应布局</title>
		<style type="text/css">
			
		</style>
	</head>
	<body>
		<div class="wrapper">
			<div class="left">左侧左侧左侧左侧左侧左侧左侧左侧左侧左侧左侧左侧左侧左侧</div>
			<div class="right">右侧右侧右侧右侧右侧右侧右侧右侧右侧右侧右侧右侧右侧右侧</div>
		</div>
	</body>
</html>

  

 

1、float+bfc,缺点:父元素需要清除浮动,否则高度计算不会包括浮动元素。

/* 清除浮动 */
.wrapper::before, .wrapper::after {
	display: table;
	content: '';
	clear: both;
}
/* 左侧浮动 */
.left {
	width: 100px;
	float: left;
}
/* 右侧触发bfc */
.right {
	overflow: hidden;
}

 

2、float + margin-left,缺点也是父元素需要清除浮动,否则高度计算不会包括浮动元素。

/* 清除浮动 */
.wrapper::before, .wrapper::after {
	display: table;
	content: '';
	clear: both;
}
/* 左侧浮动 */
.left {
	width: 100px;
	float: left;
}
/* 右侧使用margin-left撑开位置 */
.right {
	margin-left: 100px;
}

  

3、inline-block+calc,缺点:父元素需要设置font-size: 0;来清除默认间距,子元素要设置vertical-align: top;来使顶部对齐。

/* 清除默认间距 */
.wrapper {
	font-size: 0;
}
.left, .right {
	display: inline-block;
	vertical-align: top; /* 顶部对齐 */
	font-size: 16px;
}
/* 左侧固定宽度 */
.left {
	width: 100px;
}
/* 右侧计算宽度 */
.right {
	width: calc(100% - 100px);
}

  

4、table-cell

/* 父元素设置为table */
.wrapper {
	display: table;
}
/* 子元素设置为table-cell */
.left, .right {
	display: table-cell;
}
/* 左侧固定宽度 */
.left {
	width: 100px;
}

  

5、flex,缺点:低版本IE不支持

/* 父元素设置为flex */
.wrapper {
	display: flex;
}
/* 左侧固定宽度 */
.left {
	width: 100px;
}
/* 右侧设置flex: 1; */
.right {
	flex: 1;
}

  

6、grid,缺点:可能有兼容性问题。

.wrapper {
	display: grid;
	grid-template-columns: 100px 1fr
}

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM