3D 翻转卡片合集(4 款翻转样式,悬停/点击触发可切换)

CSSJS 许可:自研原创

3D 翻转卡片合集:水平翻转、垂直翻转、缩放翻转、组合动效共 4 款样式,悬停/点击触发一键切换,翻转时长可调,纯 CSS 3D 实现零依赖。

效果演示(真实可交互)

🚀悬停水平翻转rotateY 180°
翻转后

鼠标悬停时卡片水平翻转 180°,展示背面内容。

⚡点击垂直翻转rotateX 180°
点击触发

切换为「点击」模式后,单击卡片沿 X 轴垂直翻转。

🎨悬停缩放翻转rotateY + scale
组合动效

翻转同时叠加轻微放大与光晕,视觉更突出。

🔁悬停垂直翻转rotateX 180°
翻转后

沿 X 轴垂直翻转的变体,适合竖向卡片布局。

💡 点击模式下,单击卡片查看效果

完整代码

<div class="flip-card">
  <div class="flip-inner">
    <div class="face front">🚀 正面内容</div>
    <div class="face back">翻转后的背面</div>
  </div>
</div>
.flip-card {
  width: 200px;
  height: 190px;
  perspective: 900px;               /* 视距,3D 翻转的立体感来源 */
}
.flip-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  transition: transform .65s cubic-bezier(.4, .1, .2, 1);
}
.face {
  position: absolute;
  inset: 0;
  backface-visibility: hidden;     /* 关键:背面朝外时隐藏 */
  -webkit-backface-visibility: hidden;
  border-radius: 14px;
}
.front { background: #6c8cff; }
.back  { background: #2a2f52; transform: rotateY(180deg); }

/* 触发方式一:悬停 */
.flip-card:hover .flip-inner { transform: rotateY(180deg); }
// 触发方式二:点击(切换触发方式时使用)
document.querySelectorAll('.flip-card').forEach(card => {
  card.addEventListener('click', () => card.classList.toggle('flipped'));
});
/* 配合点击模式 */
.flip-card.flipped .flip-inner { transform: rotateY(180deg); }

样式变体(仅改 transform 一行)

样式正面→背面说明
水平翻转rotateY(180deg)最经典的左右翻页效果
垂直翻转rotateX(180deg)上下翻页,适合竖向卡片
缩放翻转rotateY(180deg) scale(1.08)翻转叠加放大,视觉更抢眼

参数说明

参数位置说明
翻转时长transition: ... .65s ...200-1500ms,越快越干脆
触发方式:hover / .flipped悬停或点击切换类名
视距perspective: 900px300-1200px,决定翻转立体感
缓动曲线cubic-bezier(.4,.1,.2,1)标准进出曲线,可换回弹曲线
背面初始态.back { transform: rotateY(180deg) }与翻转轴必须一致,否则背面朝向错误

兼容性与性能

常见问题

Q: 翻转后背面文字是镜像的怎么办? 这是正常的 3D 行为,背面本身就应写「镜像方向」的内容;更常见的问题是背面忘加 transform: rotateY(180deg) 初始态,导致翻转时先显示一次镜像正面。

Q: 为什么有的浏览器翻转时卡片会闪一下? 通常是 backface-visibility 缺失或父级有 overflow: hidden 裁切了 3D 上下文。确保 .flip-inner 上写了 transform-style: preserve-3d,且不要在 .flip-card 上设置 overflow: hidden。

Q: 正面图片内容较多,翻转时性能如何? transform 过渡只触发合成,与内容多少无关;真正消耗性能的是图片本身的解码。建议正反面图片使用同一张(压缩后),并设置 width/height 避免布局抖动。

Q: 可以商用吗? 可以。本组件为粤喵自研原创实现,免费商用无需署名,4 款样式均可自由组合使用。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布: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(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核