卡片悬停上浮特效(上浮+阴影+描边发光 CSS 源码)
4 款卡片悬停上浮特效源码:基础上浮、上浮发光描边、图标弹跳、渐变描边,纯 CSS 实现,适合功能入口与产品展示卡片。
效果演示(真实可交互)
下方 4 张卡片分别演示不同的悬停上浮姿态:基础阴影上浮、发光描边上浮、图标弹跳上浮、渐变描边上浮。
基础上浮
translateY 上浮 8px,阴影同步加深变大,最通用的卡片悬停姿态。
上浮 + 发光描边
上浮的同时边框点亮主题色并向外扩散光晕,适合深色页面强调焦点。
上浮 + 图标弹跳
卡片上浮时图标轻微弹跳,增加趣味性,适合产品功能入口卡片。
上浮 + 渐变描边
使用渐变边框提升质感,悬停时卡片整体轻微倾斜,视觉更立体。
完整代码
HTML 结构:四张卡片共用一个 .card 基类,通过追加不同类名切换效果:
<div class="card c-lift">…内容…</div>
<div class="card c-glow">…内容…</div>
<div class="card c-bounce">…内容…</div>
<div class="card c-grad">…内容…</div>
核心 CSS:
.card {
background: #1c2029;
border: 1px solid #2a2f3a;
border-radius: 14px;
transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
will-change: transform;
}
/* ① 基础上浮:上移 8px + 阴影加深 */
.c-lift:hover {
transform: translateY(-8px);
box-shadow: 0 14px 28px rgba(0, 0, 0, .35);
}
/* ② 上浮 + 发光描边 */
.c-glow:hover {
transform: translateY(-8px);
border-color: #6c8cff;
box-shadow: 0 12px 24px rgba(108, 140, 255, .25);
}
/* ③ 上浮 + 图标弹跳 */
.c-bounce:hover { transform: translateY(-8px); box-shadow: 0 14px 28px rgba(0,0,0,.35); }
.c-bounce:hover .c-icon { animation: bounce .5s ease; }
@keyframes bounce {
0% { transform: translateY(0); }
40% { transform: translateY(-8px) scale(1.1); }
100% { transform: translateY(0) scale(1); }
}
/* ④ 渐变描边:双层背景实现 */
.c-grad {
border: 2px solid transparent;
background:
linear-gradient(#1c2029, #1c2029) padding-box,
linear-gradient(135deg, #6c8cff, #b388ff) border-box;
}
.c-grad:hover {
transform: translateY(-8px) rotate(-1deg);
box-shadow: 0 14px 28px rgba(108, 140, 255, .28);
}
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
translateY | -8px | 悬停上浮距离,越大越明显 |
阴影 14px 28px | — | 阴影扩散程度,控制悬浮感 |
| 发光颜色 | #6c8cff | 描边/光晕主题色 |
| 动画时长 | .3s | 上浮速度,建议 0.25-0.4s 之间 |
rotate(-1deg) | — | 渐变描边卡片的轻微倾斜角度 |
兼容性与性能
- 纯 CSS 实现,兼容所有现代浏览器,无任何依赖库
- 动画仅涉及
transform与box-shadow,性能良好,列表页大量使用也不卡顿 - 渐变描边使用了
background双层技巧,注意背景色的 padding-box 与 border-box 配合 - 建议在卡片较多时给
.card加will-change: transform提示浏览器提前合成
常见问题
Q: 阴影太大显得脏,怎么调? 把阴影值改小,比如 0 8px 16px,同时把透明度从 .35 降到 .25,悬浮感会更细腻。
Q: 图标弹跳动画能换方向吗? 可以,改 @keyframes bounce 里的 translateY 与 scale 值即可,比如加一个 rotate 做旋转弹跳。
Q: 渐变描边卡片的背景色改了,边框渐变会失效吗? 不会,边框渐变来自 border-box 层,与内层背景色相互独立,只改内层颜色即可。
Q: 可以商用吗? 可以,粤喵自研原创组件,免费商用无需署名。
常见问题
这个组件可以商用吗?
可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。
浏览器兼容性如何?
支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。
怎么修改动画参数?
直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。