用 display: grid 划分顶部/侧边/主内容三区最稳,推荐 grid-template-rows: 64px 1fr 48px、grid-template-columns: 240px 1fr,并配 min-height: 100vh 防底部悬空;侧边栏需设 overflow-y: auto 和 max-height: calc(100vh - 64px - 48px),主内容区用 overflow: auto 而非 scroll,小屏响应式宜用 transform 位移隐藏侧边栏。

用 display: grid 划分顶部/侧边/主内容三区最稳
管理控制台页面结构固定、区域职责明确,display: grid 是目前最直接可控的方案。别再用 float 或嵌套 position: absolute 拼凑——它们会让后续加搜索框、导出按钮或暗色模式时反复推翻重写。
推荐在最外层容器(比如 对应:顶部栏高 64px、侧边栏宽 240px、主内容区自适应、底部栏高 48px。注意必须配 很多人写 正确写法要显式约束四边: 常见错误是给主内容容器写 小屏设备(如 iPad 竖屏)想隐藏侧边栏、让主内容全宽显示?别直接 更稳妥的做法是用位移+视觉隐藏组合: 真正难的不是怎么画出三块区域,而是当用户缩放页面到 125%、开着系统高对比度模式、又连着 4K 外接屏时,侧边栏是否还钉在左上角、滚动是否依然顺滑、文字会不会被截断——这些细节没被测试过,布局就算不上“可用”。 或一个 grid-template-rows: 64px 1fr 48px;
grid-template-columns: 240px 1fr;
min-height: 100vh,否则内容少时底部会悬空。
display: flex; flex-direction: column,别硬加前缀overflow-y: auto; max-height: calc(100vh - 64px - 48px)
display: flex; justify-content: space-between; align-items: center 就够了
position: fixed 做侧边栏时必须锁死四个方向position: fixed; top: 64px; left: 0;,结果一滚动就发现侧边栏下面留白、或者被顶部栏遮住一半——问题出在没管 bottom 和 width。.sidebar {
position: fixed;
top: 64px;
left: 0;
bottom: 48px;
width: 240px;
overflow-y: auto;
}
bottom,浏览器默认按 auto 算高度,内容少时侧边栏就塌缩width,某些旧版 Chrome 会按内容撑开,破坏与主内容区的对齐scrollbar-gutter: stable both-edges 防止滚动条出现时布局偏移主内容区用
overflow: auto 而不是 scroll
overflow: scroll,导致无论内容多长,滚动条永远显示——既占空间又干扰视觉。overflow: auto 才是合理选择:只在内容溢出时才出现滚动条。但要注意两个坑:
100vh 或没配合 grid-row: 2 / -1),auto 就会失效,变成完全不滚动flex 或 grid 子容器,得确保子容器也设了 min-height: 0,否则长文本会把父容器撑爆,滚动依旧不触发table-layout: fixed 和 word-break: break-word,防止单元格无限拉宽响应式断点下侧边栏收起逻辑不能只靠
display: none
display: none ——这会导致 DOM 节点突然消失,菜单状态丢失、焦点跳失、动画卡顿。@media (max-width: 768px) {
.sidebar {
transform: translateX(-100%);
transition: transform 0.2s ease;
}
.sidebar.active {
transform: translateX(0);
}
}
transform 而非 left,避免触发重排(reflow)transition 后,配合 JS 切换 .active 类就能实现平滑呼出.sidebar 加 will-change: transform,尤其在低端安卓机上能减少闪烁
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











