CSS Grid双列布局:实现独立滚动区域的问题求助
解决方案:适配视口高度的双列布局问题修复
要实现左列两行各占可视高度50%、内容超出滚动的效果,核心是利用Flexbox布局强制平分左列空间,以下是完整修复代码:
HTML结构
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>双列布局修复</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <div class="left-column"> <div class="top-section"> <!-- 第一行内容,超出将滚动 --> <p>大量内容示例...</p> <p>大量内容示例...</p> <p>大量内容示例...</p> <p>大量内容示例...</p> <p>大量内容示例...</p> <p>大量内容示例...</p> <p>大量内容示例...</p> <p>大量内容示例...</p> </div> <div class="bottom-section"> <!-- 第二行内容,超出将滚动 --> <p>第二行内容示例...</p> </div> </div> <div class="right-column"> <!-- 右列内容,超出将滚动 --> <p>右列大量内容示例...</p> <p>右列大量内容示例...</p> <p>右列大量内容示例...</p> <p>右列大量内容示例...</p> <p>右列大量内容示例...</p> <p>右列大量内容示例...</p> <p>右列大量内容示例...</p> </div> </div> </body> </html>
CSS样式
/* 重置默认边距,让根元素占满视口高度 */ html, body { height: 100%; margin: 0; padding: 0; } /* 外层容器:双列水平布局,占满视口高度 */ .container { display: flex; height: 100%; } /* 左列:垂直布局,占满父容器高度 */ .left-column { width: 300px; /* 可根据需求调整宽度,或用flex比例 */ display: flex; flex-direction: column; height: 100%; border-right: 1px solid #eee; } /* 左列上下两行:强制平分空间,超出内容滚动 */ .left-column .top-section, .left-column .bottom-section { flex: 1; /* 关键:自动平分可用高度 */ overflow: auto; /* 内容超出时显示滚动条 */ padding: 10px; box-sizing: border-box; /* 内边距不占用额外高度 */ } /* 右列:占满剩余空间,高度100%,超出滚动 */ .right-column { flex: 1; height: 100%; overflow: auto; padding: 10px; box-sizing: border-box; }
关键修复点
- 给
html和body设置height:100%,确保外层容器能继承视口高度 - 左列使用
flex-direction: column垂直布局,同时设置height:100% - 左列的两个子元素设置
flex:1,强制平分左列的可用高度,不受内容多少影响 - 给子元素添加
overflow:auto,内容超出时自动显示滚动条 - 用
box-sizing: border-box避免内边距撑开元素高度,保证50%占比准确
内容的提问来源于stack exchange,提问作者Theiaz
相关产品推荐
相关产品推荐

