Flex布局不继承flex-direction和align-items,每层需显式设置;flex:1在多层嵌套中易失控,需逐层约束高度;一维布局优先用Flex,二维结构推荐Grid。
很多人以为父容器用了 flex-direction: column,子容器里的 flex 项目就会自动垂直排列——其实完全不会。子容器默认仍是 flex-direction: row,结果内容横着挤成一行、高度塌陷,调试时看到 computed 值才发现问题。
flex-direction,确认是否符合预期.inner { display: flex; flex-direction: column; }
父容器的 align-items: center 对孙级元素完全无效。一旦某个子元素自己也是 display: flex,它内部的对齐就得靠它自己的 align-items 和 justify-content 控制。
.outer { align-items: center; } + .inner { display: flex; } → 内层内容不居中.inner { display: flex; align-items: center; justify-content: center; }
flex: 1 看似省事,但在两层以上嵌套中极易引发高度坍缩或无限拉伸——尤其当某层没设明确高度来源时。
flex: 1 本质是 flex: 1 1 0,依赖父容器有可用主轴空间;若父容器高度由内容撑开,它就无空间可分flex: 1 时,中间每一层都必须有高度约束:比如 height: 100vh、min-height: 0 或上层也用了 flex: 1
outline: 1px solid red,看实际占位是否符合预期Flex 是一维布局,适合行或列的局部控制;Grid 才是二维结构的天然选择。把整个页面强行拆成多层 Flex,不如外层用 display: grid 划分区域,内层再用 Flex 组织内容。
立即学习“前端免费学习笔记(深入)”;
grid-template-areas: "header header header" "sidebar main main" "footer footer footer"
min-width: 0、overflow 等边界问题