用 语义化团队成员,配合 display: grid 与 minmax() 实现无 JS 响应式布局;头像用 配 alt 和 aspect-ratio,禁用 background-image;链接独立、懒加载、外链加 rel,确保 SEO、无障碍与性能。

直接用 <section></section> 套多个 <article></article>,配合 display: grid + minmax() 就能跑通所有设备,不用 JS、不依赖框架,改人名头像也不会崩。
为什么不能用 <table> 或一堆 <code><div><p>表格语义是二维关系数据(比如花名册带工号/部门/入职时间),团队成员是独立内容单元,<code><table> 会让屏幕阅读器乱读、响应式时列固定易溢出、后续加 hover 或懒加载也难操作。全用 <code><div> 则丢失结构信息,SEO 和无障碍支持弱——<code><article></article> 才表示“一个完整、可独立分发的内容”,比如“张伟,技术总监”就是一个合格的 <article></article>。
-
<article></article> 必须有明确语义:每个成员一个,别共用容器再靠 class 区分
- 头像必须用
<img> 标签,alt 写真实姓名+角色(如 alt="李娜 - 后端工程师"),禁用 CSS background-image —— 否则 alt 文本丢失,无障碍和 SEO 全失效
- 姓名用
<h3></h3>,职位用 <p class="role"></p>,简介用 <p class="bio"></p>,别全塞进一个 <p></p> 或用 <h4></h4> 冒充职位
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) 怎么写才不翻车
<article></article> 必须有明确语义:每个成员一个,别共用容器再靠 class 区分<img> 标签,alt 写真实姓名+角色(如 alt="李娜 - 后端工程师"),禁用 CSS background-image —— 否则 alt 文本丢失,无障碍和 SEO 全失效<h3></h3>,职位用 <p class="role"></p>,简介用 <p class="bio"></p>,别全塞进一个 <p></p> 或用 <h4></h4> 冒充职位grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) 怎么写才不翻车这行是响应式卡片布局的核心,但写错一个参数就会在小屏上挤成一条线、或大屏留大片空白。关键不是“抄代码”,而是理解三个值的作用:auto-fill 会保留空位占位(避免最后一行卡片突然变宽),280px 是最小宽度底线(确保手机横屏时头像和文字不糊成一团),1fr 是上限(撑满可用空间)。
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
- 别写
repeat(3, 1fr)—— 小屏下强行三列,内容横向溢出或缩成窄条 - 别用
auto-fit替代auto-fill—— 它会收缩空列,导致网格错位,视觉失衡 - Safari iOS 15 及更早对
minmax()在auto-fill中支持不稳定,若需兼容,降级为repeat(2, 1fr)+@media (min-width: 768px) { ... repeat(3, 1fr) } - 父容器必须设
gap: 1.5rem,别用margin模拟间距 —— 后者在断点切换时容易多出边缘空白
头像怎么不拉伸、不模糊、失败还有兜底
头像变形、模糊、加载空白,90% 出在尺寸控制逻辑混乱:要么 HTML 属性写死 width="120" height="120" 强行拉伸,要么 CSS 里只设 width: 100% 却没约束比例,要么靠 object-fit: cover 硬裁但没配等宽高容器。
- 删掉
<img>标签里的width和heightHTML 属性(它们会覆盖 CSS,且在高 DPI 屏上模糊) - CSS 中必须同时存在:
width: 100%; height: 100%; aspect-ratio: 1 / 1; object-fit: cover;——aspect-ratio比写死width/height更健壮,object-fit: cover是裁剪而非拉伸 - 加载失败时纯 CSS 兜底:用外层容器设
background-image,<img>叠在上面并设width: 100%; height: 100%;图片失败时<img>退化为空元素,背景自然透出 - 用户上传头像?后端必须强制转为 ≥400×400 的 JPEG/WebP,否则小图放大后糊成马赛克
移动端点击、链接、性能常被忽略的细节
团队页常被当成“静态装饰”,结果首屏 6 张头像一起加载,LCP 超 4s;点头像跳 GitHub 却没加 rel,埋下安全漏洞;用 onclick 绑定整个卡片,移动端点透、键盘用户无法聚焦。
- 所有头像和姓名链接,只套在
<a></a>上,别给整个<article></article>加onclick—— 语义不清、无障碍差、点透风险高 - 外链必须带
rel="noopener noreferrer",尤其是target="_blank";SPA 里优先用target="_self"+ 同路由跳转(如/people/jane) - 每张头像加
loading="lazy",非首屏卡片图片延迟加载;图片走 CDN,格式优先 WebP,尺寸按设备 dpr 提供 2x 版本 - 全局加
* { box-sizing: border-box; },否则padding会让卡片宽度超预期,移动端一打开就横向滚动
最复杂的不是写多少 CSS,而是让每张卡片真正“独立”:语义独立(<article></article>)、尺寸独立(aspect-ratio + minmax)、加载独立(loading="lazy")、链接独立(每个 <a></a> 明确作用域)。一旦其中一环混用全局样式或硬编码,加第 5 个人时就得重调整。










