不能用做后台页面整体布局,因其语义错位、滚动不可控、高度计算失效、屏幕阅读器误读;应改用display: grid或flex,通过grid-template-areas等明确划分区域并隔离滚动。

别用 做后台页面整体布局,它只该出现在数据展示区内部;重构核心是把语义错位的结构拉回正轨——导航是 ,内容是 ,滚动必须隔离,区域边界必须可控。为什么 布局在后台里会撑高、截断、读不出来表格单元格不参与常规文档流,height: 100vh 在 上基本无效;侧边栏一旦设了 position: fixed,就会被 容器裁剪;屏幕阅读器把 | 首页 | 当成数据行读,而不是导航链接。常见错误现象包括:
里塞了 50 行数据,滚动条却出现在浏览器窗口边缘,侧边栏跟着滚走- 缩放文字时,
colspan 单元格内容溢出,但 overflow: hidden 不生效
- 媒体查询下
display: table-cell 无法隐藏侧边栏,只能靠 visibility: hidden 留白
用 display: grid 替换 的最小改动路径保留原有 HTML 标签结构(比如仍用 、、),只改 CSS。关键不是“怎么写新代码”,而是“怎么让旧结构听新规则的话”。
必须写的三行 CSS:
.layout { display: grid; grid-template-areas: "header header" "sidebar main"; grid-template-rows: 64px 1fr; grid-template-columns: 240px 1fr; height: 100vh; }
.sidebar { grid-area: sidebar; overflow-y: auto; }
.main { grid-area: main; overflow: auto; }
注意点:
-
grid-template-areas 中每行引号内列数必须一致,否则整个声明失效
-
grid-area 必须写在子元素上,且值要和 grid-template-areas 中完全匹配(大小写、空格都不能差)
- 不要给
.sidebar 设 width 或 flex,Grid 下这些属性会被忽略
如果必须保留 标签(比如 legacy iframe 或 CMS 输出)那就只把它当“容器壳”,不碰它的布局逻辑。真正的滚动、折叠、响应式控制,全交给内部的
|
|
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!