跳转至

Pokemon Cards CSS 效果

1143 个字 22 行代码 4 张图片 预计阅读时间 4 分钟

这是一个用纯 CSS 实现的宝可梦卡片全息效果演示。

鼠标悬停在卡片上,移动鼠标,可以看到 3D 倾斜和彩虹光泽。

皮卡丘
皮卡丘
喷火龙
喷火龙
超梦
超梦
水箭龟
水箭龟

原理:只用 CSS 为什么能做出这种效果?

pokemon-cards-css 这个项目没有任何 WebGLCanvas 或复杂图形库。它的秘密是多层叠加 + 混合模式

1. 3D 倾斜(Perspective + Rotate)

.pokemon-card {
  perspective: 1200px;          /* 透视深度 */
  transform-style: preserve-3d; /* 子元素保持 3D */
}

.pokemon-card__frame {
  transform: rotateX(var(--rx)) rotateY(var(--ry)) translateZ(16px);
}
  • perspective 决定 " 眼睛离卡片多远 ",值越大越扁平,越小越夸张
  • rotateX 控制上下倾斜,rotateY 控制左右倾斜
  • translateZ 让卡片朝你 " 浮起来 "
  • JS 根据鼠标位置实时计算 --rx--ry

2. 彩虹光泽(Conic Gradient + Color Dodge)

.pokemon-card__shine {
  mix-blend-mode: color-dodge;  /* 关键!让颜色像光一样叠加 */
  background:
    radial-gradient(...),       /* 中心白光 */
    conic-gradient(...);         /* 环形彩虹 */
}

这是整个效果最核心的部分:

  • conic-gradient:从中心向外发散的锥形渐变,一圈彩虹色
  • radial-gradient:叠加一个白色光斑,模拟光源中心
  • mix-blend-mode: color-dodge:混合模式,让亮部更亮,暗部透出底层图片
  • filter: brightness(1.3) contrast(1.2):进一步提升对比度,让光泽更 " "

3. 白色眩光(Overlay Glare)

.pokemon-card__glare {
  mix-blend-mode: overlay;
  background: linear-gradient(115deg, transparent 25%, white 48%, transparent 52%);
}

一条倾斜的白色渐变带,随着鼠标移动划过卡片表面,模拟塑料卡片的反光。

4. 边缘发光(Conic Border)

.pokemon-card__frame::after {
  background: conic-gradient(from var(--angle), ...);
  -webkit-mask: ...;  /* 只保留边框 */
}

conic-gradient 做彩虹边框,再用 mask 裁成只有边缘显示。鼠标移动时 --angle 旋转,边框颜色跟着变。


如果你想做自己的卡片

需要准备什么

素材 说明
卡片正面图 一张 734×1024 左右的 PNG,最好是圆角卡片形状
(可选)纹理遮罩 如果想做出 " 只有图片某些区域反光 " 的效果,需要一张黑白遮罩图
(可选)全息底纹 星空 / 网格 / glitter 纹理图,用于更复杂的效果

最简单的制作流程

  1. 找一张你喜欢的卡片图(游戏王、炉石、自己的设计都可以)
  2. 把上面的 CSS 复制过去
  3. 换掉 src 里的图片地址
  4. 调整 aspect-ratio 匹配你的图片比例

图片资源从哪来

  • 宝可梦官方https://images.pokemontcg.io/{系列}/{编号}.png
  • 系列代码base1(初代swsh1(剑盾)等
  • 编号:卡片在系列里的序号
  • 游戏王:项目 YGOPro 或各种 wiki 有高清卡图
  • 自己设计:用 Figma / PS 做一张 734×1024 的卡片,导出 PNG

进阶玩法

效果 怎么实现
只有特定区域反光 加一张 mask 图片,用 mask-image 控制光泽显示范围
星空 / 银河纹理 shine 层再叠加一张 glitter.pngbackground-blend-mode: overlay
卡片背面 transform: rotateY(180deg) 的背面层,点击翻转
多张卡片扇形展开 nth-child 给每张卡片不同的 rotateZtranslateX

参考