从内容而不是设备型号出发
“手机、平板、电脑”只是便于沟通的标签。设备尺寸一直在变化,真正需要关注的是内容何时变得拥挤。例如导航放不下、正文行长过长、卡片标题被挤成四行,这些位置才是合理的断点。
先建立稳定的内容容器
页面需要最大宽度避免在大屏上过度拉伸,也需要小屏留白。用 min() 可以把两条规则写在一起:
.container {
width: min(1120px, calc(100% - 32px));
margin-inline: auto;
}
正文阅读区域通常应更窄。中文内容可以控制在约 700 至 800 像素,让视线换行更轻松。
让组件自己决定列数
Grid 的 auto-fit 和 minmax() 很适合卡片列表。空间足够时自动增加列数,不够时自动换行,很多场景无需媒体查询。
.cards {
display: grid;
grid-template-columns:
repeat(auto-fit, minmax(min(280px, 100%), 1fr));
gap: 20px;
}
字体与间距也可以流动
clamp() 能为字号设置最小值、理想值和最大值,例如 clamp(2rem, 5vw, 4.5rem)。页面标题随视口平滑变化,同时不会小到难读或大到失控。
最后再添加必要断点
- 双栏内容在狭窄时改为单栏。
- 横向导航确实放不下时缩短文字或折叠菜单。
- 触控设备的按钮点击区域建议至少接近 44 像素。
- 不要隐藏关键内容来“解决”布局问题。
响应式设计的目标不是让页面在每个宽度完全相同,而是让信息层级在每个宽度都清晰。