用 CSS Grid 实现等宽视频卡片流最稳:grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) 自动计算列数,gap: 16px 统一间距,aspect-ratio: 16/9 锁定缩略图宽高比。
直接用 CSS Grid 或 Flexbox 布局最稳,别碰 float 或 table —— 现代浏览器下 display: grid 一行就能对齐卡片、控制间距、响应式断行,比写一堆 media query 更可靠。
Grid 是目前最简洁可控的方式,尤其适合固定宽高比(如 16:9)的视频缩略图。关键不是“怎么画卡片”,而是“怎么让容器自动算列数并保持间隙一致”:
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) —— 每张卡片最小 280px,最大占满可用空间,自动换行gap: 16px —— 统一内外边距,比 margin 更干净,不触发 margin collapseaspect-ratio: 16/9 配合 object-fit: cover 保证缩略图不变形`.video-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px;}.video-card img { width: 100%; aspect-ratio: 16/9; object-fit: cover;}`
float: left 或 inline-block
这两种方式在视频列表里容易出视觉断裂:浮动元素遇到高度不一致的标题就会错位;inline-block 默认有文本间隙(约 4px),导致列宽计算失准,尤其在移动端缩放时更明显。
clear: both),且父容器高度塌陷问题反复出现inline-block 的间隙无法用 margin 精确抵消,不同字体渲染下表现不一致@media
卡片高度不一致是列表页最难看的问题之一,根源常在标题换行和行高叠加。解决重点不是截断,而是“锁死高度 + 安全截断”:
立即学习“前端免费学习笔记(深入)”;
height: 3.6em(即 3 行 × 1.2 行高),配合 line-clamp: 2
display: -webkit-box 和 -webkit-line-clamp,Firefox 需补 overflow: hidden + text-overflow: ellipsis(但仅限单行)max-height + overflow: hidden,它会切断整行文字,而非按字截断`.video-title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; height: 3.6em; line-height: 1.2;}`
视频卡片在手机上真正难操作的不是文字,而是封面图和播放按钮的热区。iOS Safari 对 click 事件有 44px 最小触控要求,低于这个值容易误点或无响应:
<a> 或 <article> 加 padding: 12px,而不是只放大 font-size
width: 48px; height: 48px,再用 transform: translate(-50%, -50%) 居中,确保热区完整user-select: none 在按钮上——它会干扰 iOS 的长按识别逻辑真正卡住人的往往不是布局语法,而是缩略图加载失败时卡片高度塌陷、标题超长截断位置错乱、或者 Safari 下 aspect-ratio 不生效却没 fallback。这些细节不写进 CSS 就不会自动修复。