3D 卡片翻转 + 鼠标跟随倾斜特效(纯 CSS + JS)

CSSJS 许可:自研原创

3D 卡片翻转(hover 翻转 180°)+ 鼠标跟随倾斜(tilt 视差)两种特效,含 translate3d/perspective 原理解析,复制即用。

效果演示(真实可交互)

🎴
鼠标移上来
卡片会跟随你的鼠标倾斜

完整代码

特效一:hover 3D 翻转(纯 CSS)

<div class="flip-card">
  <div class="flip-inner">
    <div class="flip-front">正面 😺</div>
    <div class="flip-back">背面 🎨</div>
  </div>
</div>
.flip-card {
  width: 260px; height: 160px;
  perspective: 1000px;              /* 父级给透视,翻转才有立体感 */
}
.flip-inner {
  width: 100%; height: 100%;
  position: relative;
  transition: transform .6s;
  transform-style: preserve-3d;     /* 保留 3D 子元素 */
}
.flip-card:hover .flip-inner { transform: rotateY(180deg); }
.flip-front, .flip-back {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: 16px; backface-visibility: hidden;  /* 背面隐藏 */
}
.flip-front { background: #1c2029; color: #e8e8e8; }
.flip-back  { background: #6c8cff; color: #fff; transform: rotateY(180deg); }

特效二:鼠标跟随倾斜(JS tilt)

<div id="tilt">把鼠标放上来</div>
#tilt {
  width: 260px; height: 160px; border-radius: 16px;
  background: linear-gradient(135deg, #1c2029, #232a3d);
  transition: transform .12s ease-out;
  will-change: transform; cursor: pointer;
}
const card = document.getElementById('tilt');
card.addEventListener('mousemove', (e) => {
  const r = card.getBoundingClientRect();
  const x = (e.clientX - r.left) / r.width;
  const y = (e.clientY - r.top) / r.height;
  const rx = (0.5 - y) * 18;   // 倾斜角度,可调
  const ry = (x - 0.5) * 18;
  card.style.transform = `perspective(800px) rotateX(${rx}deg) rotateY(${ry}deg)`;
});
card.addEventListener('mouseleave', () => {
  card.style.transform = 'perspective(800px) rotateX(0) rotateY(0)';
});

原理说明

参数调节

参数说明
* 18(角度)越大倾斜越明显,建议 10-25
transition: .12s跟随灵敏度,越小越跟手
perspective: 800px透视强度
翻转时长 .6s翻转速度

常见问题

Q: 手机上能用吗? 鼠标跟随特效是桌面专属;3D 翻转在触屏上通过 tap 触发(:active 或点击切换类名)。

Q: 卡顿怎么办? 确认加了 will-change: transform,且不要对卡片内部做重排操作(如频繁改文字)。

Q: 可以商用吗? 可以,本组件为粤喵自研原创,免费商用无需署名。

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。