固定宽度与弹性布局结合可通过Flexbox、calc()或Grid实现;如侧边栏固定宽,主内容区自适应:用Flexbox设flex:1,或calc(100%-固定值),或Grid的fr单位分配剩余空间。

在现代网页布局中,固定宽度和弹性布局结合使用能有效适应不同场景。比如侧边栏固定宽度、主内容区自适应,或表单中部分字段固定、其余自动填充。通过 CSS 的 flexbox 和 calc() 函数可以轻松实现这种混合布局。
使用 Flexbox 实现固定+弹性布局
Flexbox 是最常用的方式,适合容器内子元素的灵活分配。
基本思路:将容器设为 display: flex,固定宽度的子元素设置具体宽度(如 200px),弹性部分设置 flex: 1,自动占据剩余空间。
立即学习“前端免费学习笔记(深入)”;
- 父容器开启 flex 布局
- 固定区域设置 width
- 弹性区域设置 flex: 1
示例代码:
.container {
display: flex;
}
.sidebar {
width: 200px; / 固定宽度 /
background: #f0f0f0;
}
.main-content {
flex: 1; / 占据剩余空间 /
background: #e0e0e0;
}
使用 calc() 手动计算宽度
当不能使用 flex 或需要更精确控制时,可用 calc() 动态计算弹性区域宽度。
例如:主内容区 = 100% 容器宽度 - 固定侧边栏宽度。
示例:
.sidebar {
width: 200px;
float: left;
}
.main-content {
width: calc(100% - 200px); / 自动减去固定宽度 /
margin-left: 200px; / 避免重叠 /
}
这种方式适合传统浮动布局或需要脱离 flex 场景。
Grid 布局中的混合使用
CSS Grid 也支持固定与弹性结合,语法更直观。
使用 fr 单位表示弹性比例,配合固定值(px、rem)定义列宽。
示例:
.container {
display: grid;
grid-template-columns: 200px 1fr; /* 第一列固定,第二列弹性 */
gap: 10px;
}
还可扩展为多列混合:200px 1fr 2fr,实现复杂但可控的布局。
基本上就这些。根据实际结构选择 flex、grid 或 calc,都能实现固定与弹性的良好结合。关键是明确哪部分“固定”,哪部分“撑满”。










