← 返回文章列表
前端工程

用 CSS Grid 做一组自然适配的内容卡片

让卡片跟随可用空间排版,同时照顾窄屏、长标题和代码片段的阅读体验。

01从内容需要的空间出发

响应式布局首先要回答:一张卡片至少需要多宽,文字才能读得舒服?与其为每一种屏幕宽度单独设计列数,可以先确定内容所需的最小空间,再让网格安排剩余宽度。

卡片内部也要保持一致的间距与层级。标题、摘要和文章信息承担不同任务,不需要通过过多装饰来区分。

02用自动轨道表达布局规则

下面的写法适用于现代浏览器:空间足够时显示多列,窄屏时允许卡片收缩到容器宽度。父容器仍应留出适当的两侧间距。

卡片本身设置 min-width: 0,可以减少内部较长内容对网格尺寸的干扰。代码区单独横向滚动,有助于避免整页被撑宽。

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

.card { min-width: 0; }
.card p { overflow-wrap: anywhere; }
.card pre { overflow-x: auto; }

03用真实内容检查布局

测试时不要只放长度相近的占位文字。可以加入一个长标题、一段连续英文、一块代码和一条较长链接,检查是否会出现页面横向溢出。

同时检查触摸区域、键盘焦点和文字大小。布局没有溢出只是起点,阅读和操作都应在小屏幕上保持清楚。

进一步阅读

下列文档用于延伸阅读,文中示例是围绕具体问题编写的简化示例。