从内容而不是设备型号出发

“手机、平板、电脑”只是便于沟通的标签。设备尺寸一直在变化,真正需要关注的是内容何时变得拥挤。例如导航放不下、正文行长过长、卡片标题被挤成四行,这些位置才是合理的断点。

先建立稳定的内容容器

页面需要最大宽度避免在大屏上过度拉伸,也需要小屏留白。用 min() 可以把两条规则写在一起:

.container {
  width: min(1120px, calc(100% - 32px));
  margin-inline: auto;
}

正文阅读区域通常应更窄。中文内容可以控制在约 700 至 800 像素,让视线换行更轻松。

让组件自己决定列数

Grid 的 auto-fitminmax() 很适合卡片列表。空间足够时自动增加列数,不够时自动换行,很多场景无需媒体查询。

.cards {
  display: grid;
  grid-template-columns:
    repeat(auto-fit, minmax(min(280px, 100%), 1fr));
  gap: 20px;
}

字体与间距也可以流动

clamp() 能为字号设置最小值、理想值和最大值,例如 clamp(2rem, 5vw, 4.5rem)。页面标题随视口平滑变化,同时不会小到难读或大到失控。

最后再添加必要断点

响应式设计的目标不是让页面在每个宽度完全相同,而是让信息层级在每个宽度都清晰。