本文讲解如何通过将文本容器与 grid 容器共同置于一个 flex 容器中,实现左侧文本、右侧 2×2 图片网格的水平对齐布局,并规避因 `transform` 导致的定位偏移问题。
在 CSS 布局实践中,混合使用 Flexbox 和 Grid 是常见且高效的方式:Flexbox 擅长一维(行或列)的整体结构划分,而 Grid 更适合二维内容的精细定位。本例中,目标是让描述性文本(.overview)与图片网格(#grid-container)严格并排——文本居左、网格居右。原始代码的问题在于:
✅ 正确解法是:将 .overview 和 #grid-container 同时设为 .flex-box 的直接子元素,并确保 .flex-box 具备完整的 Flex 控制能力(如 justify-content、align-items)。
以下是优化后的核心 CSS 与 HTML 结构:
.flex-box {
display: flex;
align-items: flex-start; /* 防止文本与网格因默认 baseline 对齐而错位 */
gap: 40px; /* 推荐替代 margin,语义更清晰、响应更可控 */
padding: 20px;
}
.overview {
width: 30%;
flex-shrink: 0; /* 防止小屏下文本被过度压缩 */
}
#grid-container {
width: 600px;
height: 600px;
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
/* 移除所有 transform —— Grid 本身已提供精准定位能力 */
}
.grid-item {
width: 300px;
height: 300px;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.grid-item img {
max-width: 100%;
max-height: 100%;
object-fit: cover;
}
Overview Text
Lorem ipsum dolor sit amet...
@@##@@
@@##@@
@@##@@
@@##@@
? 关键注意事项:
总结:布局分层要清晰——Flex 负责宏观“左右分区”,Grid 负责微观“四图排布”。摒弃 hack 式 transform 定位,回归语义化、可维护的原生布局逻辑,才能写出稳健、响应迅速的现代 CSS。