双栏错位主因是.grid列定义被非法嵌套破坏:.resume内误嵌块级元素致DOM重写;媒体查询失效因display被覆盖为block/flex;gap或外边距超限引发列宽压缩;Flexbox降级时align-items未设flex-start导致等高拉伸。

检查 Grid 列定义是否被非法嵌套破坏
双栏错位最常发生在 .resume 容器内部嵌套了不允许的块级元素,比如在 <p></p> 里直接放 <div class="content">。浏览器会立刻关闭 <code><p></p>,把后续 <div> 推到外层,导致 Grid 容器实际只包住一半内容,列宽失效。
<p>打开 Chrome DevTools → Elements 面板,逐级展开 <code>.resume,重点看:
– 是否有灰色斜体标签(被自动补全/截断)
– .resume 子节点是不是只有两个(.sidebar 和 .content),还是多出意外的 <p></p> 或 <div>
<br>– 右键 <code>.resume → “Edit as HTML”,删一个空格再回车:如果子结构整体跳出去,说明原始 DOM 已被重写
用 W3C Validator(validator.w3.org)粘贴完整 HTML,紧盯报错如:
– Element div not allowed as child of element p
– End tag div omitted
这些不是警告,是布局断裂的根源
确认媒体查询是否被高优先级样式覆盖
写了 @media (max-width: 768px) { grid-template-columns: 1fr; } 却没生效?大概率是某条全局 CSS 把 .resume 的 display 改成了 block 或 flex,让 Grid 完全不启动。
立即学习“前端免费学习笔记(深入)”;
在 Elements 面板选中 .resume,切到 “Computed” 标签,查:
– display 值是不是 grid(不是 block、flex 或继承来的)
– grid-template-columns 是否显示为生效值(而非 initial 或 inherit)
– 检查 “Styles” 面板里是否有带 !important 的规则强行覆盖了 Grid 设置
临时在控制台执行:getComputedStyle(document.querySelector('.resume')).display
如果返回 block,说明 Grid 根本没启用,得回头找覆盖源
验证 gap 和内边距是否超出容器宽度
gap: 2rem 看似无害,但在窄屏下可能撑爆容器:30% + 70% = 100%,但加上 gap 后实际占用 >100%,尤其当父容器有 padding 或 border 时,浏览器会静默压缩列宽或触发横向滚动。
推荐改用更可控的间距方式:
– 把 gap 换成 .sidebar 的 margin-right: 2rem(右侧栏不设 margin)
– 或统一用 padding 控制内容呼吸感,而非依赖 gap
– 小屏单列时,@media 内显式重置 margin 或 padding,避免残留
在 “Computed” 面板里拉到底部,看 width 和 min-width 实际值是否被强制缩小——出现小数像素(如 29.8333%)就是压缩信号
排除 Flexbox 替代方案中的 align-items 干扰
若降级用了 Flexbox(例如兼容 IE11),align-items: stretch 默认会让两栏等高,而简历左右内容长度天然不均,结果是左侧空白拉长、右侧被撑开、视觉严重错位。
必须显式覆盖:
– .resume { align-items: flex-start; }(让每栏按自身内容高度收缩)
– 避免用 height: 100% 或 min-height: 100vh 强撑容器,这会反向锁定 align-items 行为
– .sidebar 和 .content 的 flex 值建议写死:flex: 0 0 30% 和 flex: 0 0 70%,不用 flex: 1,防止内容少时缩容
真正容易被忽略的是:外层 html 和 body 是否设了 height: 100%。没设的话,min-height: 100vh 在 Flex 容器里可能失效,间接导致对齐异常



















