团队成员卡片(悬停社交链接 + 简介弹窗 CSS 源码)
团队成员卡片组件源码:渐变头像、悬停依次浮现社交链接、简介弹窗带缩放动画,纯 CSS + 原生 JS 实现,适合团队介绍页与关于我们页面。
效果演示(真实可交互)
下方为 3 张团队成员卡片:悬停时卡片上浮、头像放大旋转、三个社交链接从底部依次浮现(带 0.05s 级联延迟);点击”查看简介”会弹出带缩放动画的详情弹窗,点击遮罩或关闭按钮可退出。
粤喵
创始人 · 前端架构师
专注 CSS 动效 8 年,组件站发起人,负责整体架构与技术方向。
鱼崽
UI 设计师 · 动效控
负责组件视觉规范与交互细节,追求每一个像素的呼吸感。
猫叔
全栈工程师 · 组件作者
负责演示组件开发与性能优化,喜欢把复杂效果拆成可复用的零件。
完整代码
HTML 结构:每张卡片包含头像、姓名、职位、两行截断的个人简介、社交链接组(默认隐藏)与”查看简介”按钮:
<div class="tm-card">
<div class="tm-avatar av1">粤</div>
<h3 class="tm-name">粤喵</h3>
<p class="tm-role">创始人 · 前端架构师</p>
<p class="tm-bio">专注 CSS 动效 8 年,组件站发起人。</p>
<div class="tm-socials">
<a class="tm-soc">GH</a><a class="tm-soc">掘</a><a class="tm-soc">微</a>
</div>
<button class="tm-more">查看简介</button>
</div>
核心 CSS:社交链接默认透明 + 下移,卡片悬停时依次浮现;简介弹窗用 fixed 遮罩 + 缩放动画:
.tm-soc { opacity: 0; transform: translateY(8px); transition: all .25s ease; }
.tm-card:hover .tm-soc { opacity: 1; transform: translateY(0); }
.tm-card:hover .tm-soc:nth-child(2) { transition-delay: .05s; }
.tm-card:hover .tm-soc:nth-child(3) { transition-delay: .1s; }
.tm-modal { position: fixed; inset: 0; backdrop-filter: blur(4px); }
.tm-modal-box { animation: tm-pop .3s cubic-bezier(.22, .8, .3, 1); }
@keyframes tm-pop { from { transform: scale(.9); opacity: 0; } }
原生 JS 弹窗逻辑(无第三方库):
card.querySelector('.tm-more').addEventListener('click', () => {
modalName.textContent = card.querySelector('.tm-name').textContent;
modalRole.textContent = card.querySelector('.tm-role').textContent;
modalBio.textContent = card.querySelector('.tm-bio').textContent;
modal.hidden = false;
document.body.style.overflow = 'hidden'; // 锁定背景滚动
});
modal.addEventListener('click', e => { if (e.target === modal) close(); });
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
| 社交链接级联延迟 | 0 / .05s / .1s | 依次浮现的间隔,第 n 个延迟 (n-1)×.05s |
| 头像放大 | scale(1.1) | 悬停时头像缩放,附带 -5deg 旋转 |
| 简介截断 | 2 行 | -webkit-line-clamp 实现超出省略 |
| 弹窗动画 | 0.3s | 缩放 + 淡入的组合动画 |
| 遮罩模糊 | blur(4px) | 弹窗打开时背景模糊强度 |
兼容性与性能
- 社交链接悬停只操作 opacity/transform,合成层动画,性能开销极低
- 弹窗用
[hidden]属性控制显隐,关闭后不残留监听器与视觉干扰 -webkit-line-clamp需 WebKit 内核(Chrome/Safari/Edge),Firefox 63+ 也支持,老版本会退化为全文显示- 弹窗打开时锁定
body滚动,避免背景穿透滚动,关闭时恢复
常见问题
Q: 成员人数很多,卡片会很多行吗? 网格使用 auto-fit + minmax(200px, 1fr) 自动换行,成员增减无需调整布局,横向空间足够时自动排多列。
Q: 社交链接可以放真实图标吗? 可以,把文字简写替换为 SVG 图标即可,悬停浮现与级联动画逻辑不变。
Q: 弹窗内容想更丰富(作品集、技能条)? 在 .tm-modal-box 内追加区块,数据来源可改为从 data-* 属性或 JS 对象读取,弹窗骨架无需改动。
Q: 可以商用吗? 可以,粤喵自研原创组件,免费商用无需署名,替换成员信息与头像即可用于团队页。
许可与来源
- 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
- 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
- 首次发布:2026-09-01 · 最近更新:2026-09-01
- 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
- 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理
常见问题
这个组件可以商用吗?
可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。
浏览器兼容性如何?
支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。
怎么修改动画参数?
直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。