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

检查 Grid 列定义是否被非法嵌套破坏
双栏错位最常发生在 打开 Chrome DevTools → Elements 面板,逐级展开 用 W3C Validator(validator.w3.org)粘贴完整 HTML,紧盯报错如: 写了 在 Elements 面板选中 临时在控制台执行: 推荐改用更可控的间距方式: 在 “Computed” 面板里拉到底部,看 若降级用了 Flexbox(例如兼容 IE11), 必须显式覆盖: 真正容易被忽略的是:外层 .resume 容器内部嵌套了不允许的块级元素,比如在 里直接放 ,把后续 .resume,重点看:
– 是否有灰色斜体标签(被自动补全/截断)
– .resume 子节点是不是只有两个(.sidebar 和 .content),还是多出意外的 或
– 右键 .resume → “Edit as HTML”,删一个空格再回车:如果子结构整体跳出去,说明原始 DOM 已被重写
– 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 完全不启动。.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,避免残留width 和 min-width 实际值是否被强制缩小——出现小数像素(如 29.8333%)就是压缩信号排除 Flexbox 替代方案中的 align-items 干扰
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 容器里可能失效,间接导致对齐异常
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











