悬停揭示卡片(遮罩滑出 + 3D 翻转两种形态 CSS 源码)

CSS 许可:自研原创

悬停揭示卡片两种形态源码:底部遮罩滑出详情与 3D 翻转揭示背面,纯 CSS 实现,适合作品集、商品卡与团队成员介绍。

效果演示(真实可交互)

下方两张卡片演示两种揭示形态:左为渐变遮罩从底部滑出完整介绍,右为整卡绕 Y 轴 3D 翻转露出背面,悬停均有明显动效。

📦

悬停滑出详情

把鼠标移上来

完整介绍

遮罩层从底部滑入,展示卡片详情。常用于作品集、商品卡、团队成员介绍等场景,配合按钮引导点击。

查看详情 →
🎯

3D 翻转揭示

悬停翻转 180°

背面的秘密

整张卡片绕 Y 轴翻转,正面与背面各占一面。需要父容器设置 perspective 才会有立体感。

去背面看看 →

完整代码

HTML 结构:形态一为遮罩滑出,形态二为内层双面结构:

<!-- 形态一:遮罩滑出 -->
<div class="rv-card rv-slide">
  <div class="rv-face">…正面内容…</div>
  <div class="rv-cover">…遮罩详情…</div>
</div>

<!-- 形态二:3D 翻转 -->
<div class="rv-card rv-flip">
  <div class="rv-inner">
    <div class="rv-face face-front">…正面…</div>
    <div class="rv-face face-back">…背面…</div>
  </div>
</div>

核心 CSS:

/* 形态一:遮罩从底部滑入 */
.rv-cover {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #6c8cff, #b388ff);
  transform: translateY(100%);          /* 默认藏在底部 */
  transition: transform .45s cubic-bezier(.22, .61, .36, 1);
}
.rv-slide:hover .rv-cover { transform: translateY(0); }

/* 形态二:3D 翻转 */
.rv-flip { perspective: 900px; }        /* 父容器提供透视 */
.rv-inner {
  position: absolute; inset: 0;
  transform-style: preserve-3d;         /* 保留子元素 3D 空间 */
  transition: transform .6s cubic-bezier(.4, .1, .2, 1);
}
.rv-flip:hover .rv-inner { transform: rotateY(180deg); }
.rv-face { backface-visibility: hidden; }   /* 背面隐藏 */
.face-back { transform: rotateY(180deg); }  /* 背面预转 180° */

参数说明

参数默认值说明
遮罩位移 translateY(100%)遮罩初始位置,可改 -100% 为从上方滑入
遮罩动画时长.45s滑出速度
翻转角度 rotateY(180deg)可改 360 度获得多圈旋转
透视 perspective900px越小立体感越强,过小会变形
翻转时长.6s翻转速度

兼容性与性能

常见问题

Q: 翻转后背面文字是反的怎么办? 检查 .face-back 是否设置了 transform: rotateY(180deg),没有预转就会出现镜像文字。

Q: 遮罩想从左边滑入?translateY(100%) 换成 translateX(100%),并把 inset: 0 保留即可。

Q: 手机上想看背面内容怎么操作? 触屏没有 hover,可以监听 tap 事件给 .rv-flip 添加一个 .active 类,CSS 用 .rv-flip.active .rv-inner 触发翻转。

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

常见问题

这个组件可以商用吗?

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

浏览器兼容性如何?

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

怎么修改动画参数?

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