MODULE 06 / LESSON 01

网格与容器:先建立骨架

用列、沟槽、边距和最大宽度组织界面。

21 / 60 课组织界面与交互含互动实验

先理解这个概念

网格提供共享的对齐规则,容器限制内容扩张,沟槽分隔列,外边距提供边界。十二列只是一种方便组合的选择,简单页面完全可以只有两列或一列。网格应该跟随内容,而不是强迫内容填满所有格子。

网格定义可重复的空间约束。列数只是其中一项,容器最大宽度、列间距和内容最小宽度同样重要。十二列不自动意味着专业;当内容需要稳定阅读宽度时,两列结构可能更合适。网格应帮助组件响应空间变化,而不是把它们固定在某张设计稿坐标上。

用程序员的语言说

网格是布局约束系统,像类型系统约束允许的结构。

记住这三个原则

  1. 01

    先决定内容区域和最大宽度。

  2. 02

    用 Grid 处理二维区域,用 Flex 处理单方向排列。

  3. 03

    在小屏取消不必要的列,保留信息顺序。

实际设计时,分三步做

  1. STEP 01

    确定内容容器是流式还是有限宽,并为正文、导航与辅助区分别写出最小可用空间。

  2. STEP 02

    依据内容关系选择网格:等权集合用均匀列,正文加目录用主次列,比较数据则保留对齐关系。

  3. STEP 03

    逐步缩窄容器,观察第一次出现挤压的位置,在那里改变列数或结构;不要只检查几个设备截图。

一个容易理解的例子

BEFORE / 常见问题

卡片靠绝对定位排列,屏幕宽度变化后互相覆盖。

AFTER / 可以这样改

使用可伸缩网格和最小卡片宽度,空间不足时自动换行。

布局规则比一组固定坐标更能适应真实内容。

IMPLEMENTATION NOTE
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  gap: 1.5rem;
}

展开看:从场景到设计决定

课程卡片若每张至少需要容纳清楚标题和摘要,可以用具有最小宽度的自动列布局。宽屏显示多列,空间不足时自然减少,手机单列。课程正文则应限制阅读宽度,目录放辅助列。两个页面不必共用列数,但可以共享外边距和间距尺度,从而既一致又适合各自内容。

适用边界与取舍

自动网格不适合所有顺序敏感内容。若阅读顺序或对比关系很重要,应确认视觉排列与 DOM 顺序一致,避免为了填满空白改变含义。

YOUR TURN

把这个原则用一次

先做一个小判断

为三张功能卡片写一个自适应布局。

再完成一份设计练习

为含标题、筛选和十二张卡片的页面写三条布局约束,不使用“在某型号手机上”作为条件。

容易踩的坑

不要在任何页面都强行套十二列,也不要把设计稿像素坐标当成实现规格。

继续查阅

本课为原创教学解释。具体平台规则与标准可查阅官方资料。

MDN · CSS layout