Best For
卡片 / 堆叠 / 立体
Card Stack
3D layout with overlapping cards, creating depth through Z-axis stacking and offsets. Ideal for carousels, step-by-step displays, and card deck selection.
Best For
卡片 / 堆叠 / 立体
Primary Move
Use transform and z-index to create stacking effects
Watch Out
Do not stack too many cards causing clutter
Showcase Entry
Live preview of the showcase page. Click to explore the full experience.
Color Palette
Primary
#1a1a2e
Secondary
#f0f0f5
Accent 1
#6c5ce7
Accent 2
#00cec9
Prompts
Copy and generate 卡片堆叠布局 style interfaces with one click. Hard prompts enforce strict consistency, while soft prompts allow flexible implementation within the style direction.
High consistency, strictly enforces style rules
STYLEKIT_STYLE_REFERENCE
style_name: Card Stack
style_slug: card-stack
style_source: /styles/card-stack
# Hard Prompt
Strictly follow the style rules below and maintain consistency. No style drift allowed.
## Requirements
- Prioritize style consistency first, then creative extension.
- When conflicts arise, treat prohibitions as the highest priority.
- Self-check before output: verify colors, typography, spacing, and interactions still match this style.
## Style Rules
# Card Stack (卡片堆叠布局) Design System
> 卡片前后重叠的立体布局,通过 Z 轴层叠和偏移创造深度感,适合轮播、步骤展示、卡组选择。
## 核心理念
Card Stack(卡片堆叠布局)是一种利用 Z 轴创造深度感的布局方式,多张卡片前后重叠,形成视觉层次。
核心理念:
- 深度感知:通过层叠暗示更多内容
- 焦点引导:最前面的卡片获得最多关注
- 交互预期:暗示可以翻阅或切换
- 空间节省:在有限空间展示多个选项
- 洗牌动感:hover 时牌堆像手持扑克般散开
设计原则:
- 视觉一致性:所有组件必须遵循统一的视觉语言,从色彩到字体到间距保持谐调
- 层次分明:通过颜色深浅、字号大小、留白空间建立清晰的信息层级
- 交互反馈:每个可交互元素都必须有明确的 hover、active、focus 状态反馈
- 响应式适配:设计必须在移动端、平板、桌面端上保持一致的体验
- 无障碍性:确保色彩对比度符合 WCAG 2.1 AA 标准,所有交互元素可键盘访问
---
## Token 字典(精确 Class 映射)
### 边框
```
宽度: border
颜色: border-zinc-200
圆角: rounded-2xl
```
### 阴影
```
小: shadow-md
中: shadow-xl
大: shadow-2xl
悬停: hover:shadow-2xl
聚焦: focus:shadow-xl
```
### 交互效果
```
悬停位移: undefined
过渡动画: transition-all duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]
按下状态: active:scale-95
```
### 字体
```
标题: font-bold tracking-tight
正文: font-sans
```
### 字号
```
Hero: text-3xl md:text-4xl lg:text-5xl
H1: text-2xl md:text-3xl
H2: text-xl md:text-2xl
H3: text-lg md:text-xl
正文: text-sm md:text-base
小字: text-xs md:text-sm
```
### 间距
```
Section: py-16 md:py-20 lg:py-24
容器: px-4 md:px-8
卡片: p-6 md:p-8
```
---
## [FORBIDDEN] 绝对禁止
以下 class 在本风格中**绝对禁止使用**,生成时必须检查并避免:
### 禁止的 Class
- `rounded-none`
- `shadow-none`
- `border-4`
- `border-8`
### 禁止的模式
- 匹配 `^rounded-none$`
- 匹配 `^border-[48]`
### 禁止原因
- `rounded-none`: Card Stack uses generous rounding (rounded-2xl) for soft stacked cards
- `shadow-none`: Card Stack requires shadows to convey depth and layering
- `border-4`: Card Stack uses subtle or no borders, relying on shadows for definition
> WARNING: 如果你的代码中包含以上任何 class,必须立即替换。
---
## [REQUIRED] 必须包含
### 按钮必须包含
```
rounded-full
shadow-lg
hover:shadow-xl
transition-shadow
```
### 卡片必须包含
```
rounded-2xl
shadow-xl
transition-all duration-300
bg-white
```
### 输入框必须包含
```
bg-white/80 backdrop-blur
border border-zinc-200
rounded-xl
focus:outline-none
focus:ring-2 focus:ring-purple-500/30
transition-all
```
---
## [COMPARE] 错误 vs 正确对比
### 按钮
[WRONG] **错误示例**(使用了圆角和模糊阴影):
```html
<button class="rounded-lg shadow-lg bg-blue-500 text-white px-4 py-2 hover:bg-blue-600">
点击我
</button>
```
[CORRECT] **正确示例**(使用硬边缘、无圆角、位移效果):
```html
<button class="rounded-full shadow-lg hover:shadow-xl transition-shadow bg-[#ff006e] text-white px-4 py-2 md:px-6 md:py-3">
点击我
</button>
```
### 卡片
[WRONG] **错误示例**(使用了渐变和圆角):
```html
<div class="rounded-xl shadow-2xl bg-gradient-to-r from-purple-500 to-pink-500 p-6">
<h3 class="text-xl font-semibold">标题</h3>
</div>
```
[CORRECT] **正确示例**(纯色背景、硬边缘阴影):
```html
<div class="rounded-2xl shadow-xl transition-all duration-300 bg-white p-6 md:p-8">
<h3 class="font-bold tracking-tight text-lg md:text-xl">标题</h3>
</div>
```
### 输入框
[WRONG] **错误示例**(灰色边框、圆角):
```html
<input class="rounded-md border border-gray-300 px-3 py-2 focus:ring-2 focus:ring-blue-500" />
```
[CORRECT] **正确示例**(黑色粗边框、聚焦阴影):
```html
<input class="bg-white/80 backdrop-blur border border-zinc-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500/30 transition-all px-3 py-2 md:px-4 md:py-3" placeholder="请输入..." />
```
---
## [TEMPLATES] 页面骨架模板
使用以下模板生成页面,只需替换 `{PLACEHOLDER}` 部分:
### 导航栏骨架
```html
<nav class="bg-white border-b-2 md:border-b-4 border-black px-4 md:px-8 py-3 md:py-4">
<div class="flex items-center justify-between max-w-6xl mx-auto">
<a href="/" class="font-black text-xl md:text-2xl tracking-wider">
{LOGO_TEXT}
</a>
<div class="flex gap-4 md:gap-8 font-mono text-sm md:text-base">
{NAV_LINKS}
</div>
</div>
</nav>
```
### Hero 区块骨架
```html
<section class="min-h-[60vh] md:min-h-[80vh] flex items-center px-4 md:px-8 py-12 md:py-0 bg-{ACCENT_COLOR} border-b-2 md:border-b-4 border-black">
<div class="max-w-4xl mx-auto">
<h1 class="font-black text-4xl md:text-6xl lg:text-8xl leading-tight tracking-tight mb-4 md:mb-6">
{HEADLINE}
</h1>
<p class="font-mono text-base md:text-xl max-w-xl mb-6 md:mb-8">
{SUBHEADLINE}
</p>
<button class="bg-black text-white font-black px-6 py-3 md:px-8 md:py-4 border-2 md:border-4 border-black shadow-[4px_4px_0px_0px_rgba(255,0,110,1)] md:shadow-[8px_8px_0px_0px_rgba(255,0,110,1)] hover:shadow-none hover:translate-x-[2px] hover:translate-y-[2px] transition-all text-sm md:text-base">
{CTA_TEXT}
</button>
</div>
</section>
```
### 卡片网格骨架
```html
<section class="py-12 md:py-24 px-4 md:px-8">
<div class="max-w-6xl mx-auto">
<h2 class="font-black text-2xl md:text-4xl mb-8 md:mb-12">{SECTION_TITLE}</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 md:gap-6">
<!-- Card template - repeat for each card -->
<div class="bg-white border-2 md:border-4 border-black shadow-[4px_4px_0px_0px_rgba(0,0,0,1)] md:shadow-[8px_8px_0px_0px_rgba(0,0,0,1)] p-4 md:p-6 hover:shadow-[4px_4px_0px_0px_rgba(255,0,110,1)] md:hover:shadow-[8px_8px_0px_0px_rgba(255,0,110,1)] hover:-translate-y-1 transition-all">
<h3 class="font-black text-lg md:text-xl mb-2">{CARD_TITLE}</h3>
<p class="font-mono text-sm md:text-base text-gray-700">{CARD_DESCRIPTION}</p>
</div>
</div>
</div>
</section>
```
### 页脚骨架
```html
<footer class="bg-black text-white py-12 md:py-16 px-4 md:px-8 border-t-2 md:border-t-4 border-black">
<div class="max-w-6xl mx-auto">
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<div>
<span class="font-black text-xl md:text-2xl">{LOGO_TEXT}</span>
<p class="font-mono text-sm mt-4 text-gray-400">{TAGLINE}</p>
</div>
<div>
<h4 class="font-black text-lg mb-4">{COLUMN_TITLE}</h4>
<ul class="space-y-2 font-mono text-sm text-gray-400">
{FOOTER_LINKS}
</ul>
</div>
</div>
</div>
</footer>
```
---
## [CHECKLIST] 生成后自检清单
**在输出代码前,必须逐项验证以下每一条。如有违反,立即修正后再输出:**
### 1. 圆角检查
- [ ] 搜索代码中的 `rounded-`
- [ ] 确认只有 `rounded-none` 或无圆角
- [ ] 如果发现 `rounded-lg`、`rounded-md` 等,替换为 `rounded-none`
### 2. 阴影检查
- [ ] 搜索代码中的 `shadow-`
- [ ] 确认只使用 `shadow-[Xpx_Xpx_0px_0px_rgba(...)]` 格式
- [ ] 如果发现 `shadow-lg`、`shadow-xl` 等,替换为正确格式
### 3. 边框检查
- [ ] 搜索代码中的 `border-`
- [ ] 确认边框颜色是 `border-black`
- [ ] 如果发现 `border-gray-*`、`border-slate-*`,替换为 `border-black`
### 4. 交互检查
- [ ] 所有按钮都有 `hover:shadow-none hover:translate-x-[2px] hover:translate-y-[2px]`
- [ ] 所有卡片都有 hover 效果(阴影变色或位移)
- [ ] 都包含 `transition-all`
### 5. 响应式检查
- [ ] 边框有 `border-2 md:border-4`
- [ ] 阴影有 `shadow-[4px...] md:shadow-[8px...]`
- [ ] 间距有 `p-4 md:p-6` 或类似的响应式值
- [ ] 字号有 `text-sm md:text-base` 或类似的响应式值
### 6. 字体检查
- [ ] 标题使用 `font-black`
- [ ] 正文使用 `font-mono`
> CRITICAL: **如果任何一项检查不通过,必须修正后重新生成代码。**
---
## [EXAMPLES] 示例 Prompt
### 1. 定价方案选择
堆叠展示不同定价方案
```
Create pricing cards with stack layout:
1. 3 cards stacked: Starter, Pro, Enterprise
2. Front card fully visible with details
3. Back cards scaled down, offset, and slightly rotated
4. On group-hover: back cards fan out sideways with different rotations
5. Front card lifts with scale-105 and large shadow on hover
6. Each card: plan name, price, features list, CTA
7. Navigation arrows on sides with hover feedback
Dark gradient background, white cards
```
### 2. 产品卡组
类似 Tinder 的产品浏览
```
Create a Tinder-style product card stack:
1. Stack of product cards (5 cards, 3 visible)
2. Swipe right to like, left to pass
3. Each card: product image, name, price, rating
4. On hover: top card peels up (scale-105, shadow-2xl, -translate-y-6), back cards fan out
5. Swipe animation with rotation + opacity fade
6. Undo last action button
7. Fun, interactive, mobile-friendly design
```
### 3. 步骤引导
分步引导的卡片堆叠
```
Create an onboarding flow with card stack:
1. 4 step cards stacked
2. group-hover causes back cards to fan out with rotate + translate-x
3. Front card lifts with scale-105 and shadow-2xl
4. Click Next to advance (card slides out with rotation)
5. Progress indicator dots
6. Each card: step number, title, illustration, description
7. Final card has CTA button
Clean design with duration-[400ms] ease-out transitions
```Preserves style direction, allows flexible implementation
STYLEKIT_STYLE_REFERENCE
style_name: Card Stack
style_slug: card-stack
style_source: /styles/card-stack
# Soft Prompt
Maintain the overall style essence. Implementation details can be adjusted flexibly, but do not deviate from the core visual language.
## Style Signals
- 卡片
- 堆叠
- 立体
- 层叠
- 轮播
- 3D
## Prefer
- Use transform and z-index to create stacking effects
- Back cards scale down and offset scale-95 translate-y-4
- Add progressive opacity opacity-80, opacity-60
- Support drag or click to switch cards
## Avoid
- Do not stack too many cards causing clutter
- Do not completely overlap cards hiding layer distinction
- Do not ignore interaction feedback
## Output Guidance
- Ensure overall style recognizability first, then refine details.
- Avoid over-engineering; maintain readability and maintainability.Component Templates
用于切换卡片的导航按钮,hover 时上浮
/* Card Stack Global Styles */
/* Stack container */
.card-stack {
position: relative;
display: flex;
align-items: center;
justify-content: center;
perspective: 1000px;
}
/* Base card in stack */
.card-stack-item {
position: absolute;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
/* Stack positions */
.card-stack-item:nth-child(1) {
z-index: 30;
transform: translateY(0) scale(1);
opacity: 1;
}
.card-stack-item:nth-child(2) {
z-index: 20;
transform: translateY(16px) scale(0.95) rotate(2deg);
opacity: 0.8;
}
.card-stack-item:nth-child(3) {
z-index: 10;
transform: translateY(32px) scale(0.9) rotate(-3deg);
opacity: 0.6;
}
.card-stack-item:nth-child(n+4) {
z-index: 0;
transform: translateY(48px) scale(0.85);
opacity: 0;
pointer-events: none;
}
/* Fan out on hover — deck shuffle effect */
.card-stack:hover .card-stack-item:nth-child(1) {
transform: translateY(-24px) scale(1.05);
box-shadow: 0 30px 60px rgba(0, 0, 0, 0.2);
}
.card-stack:hover .card-stack-item:nth-child(2) {
transform: translateY(32px) scale(0.95) rotate(6deg) translateX(-20px);
opacity: 0.9;
}
.card-stack:hover .card-stack-item:nth-child(3) {
transform: translateY(48px) scale(0.9) rotate(-6deg) translateX(20px);
opacity: 0.8;
}
/* Tinder-style swipe */
.card-stack-swipe .card-stack-item.swiping-left {
transform: translateX(-100%) rotate(-10deg);
opacity: 0;
}
.card-stack-swipe .card-stack-item.swiping-right {
transform: translateX(100%) rotate(10deg);
opacity: 0;
}
/* Card Stack Design Tokens */
:root {
--card-stack-primary: #1a1a2e;
--card-stack-secondary: #f0f0f5;
--card-stack-accent: #6c5ce7;
--card-stack-glow: rgba(26, 26, 46, 0.3);
}
@keyframes card-stack-fade-in {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes card-stack-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.card-stack-card {
position: relative;
overflow: hidden;
}
.card-stack-card::before {
content: "";
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.3s ease;
background: linear-gradient(135deg, rgba(26, 26, 46, 0.05), transparent);
pointer-events: none;
}
.card-stack-card:hover::before {
opacity: 1;
}
.card-stack-gradient {
background: linear-gradient(135deg, #1a1a2e, #6c5ce7);
}
.card-stack-gradient-text {
background: linear-gradient(135deg, #1a1a2e, #6c5ce7);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.card-stack-frosted {
backdrop-filter: blur(12px) saturate(180%);
-webkit-backdrop-filter: blur(12px) saturate(180%);
background: rgba(26, 26, 46, 0.08);
}
.card-stack-accent-corner {
clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2rem), calc(100% - 2rem) 100%, 0 100%);
}
.card-stack-animate-in {
animation: card-stack-fade-in 0.5s ease-out both;
}Compatible Visual Styles
卡片堆叠布局 is a layout pattern that can be paired with the following visual styles.
IDE Integration
Download configuration files for AI coding assistants to generate code in this style.
Style Pack
Get complete machine-readable style assets including design tokens, Tailwind presets, CSS variables, and shadcn/ui themes.
Metadata
Style metadata including version information
Design Tokens
Compatible with Figma / Style Dictionary / Tokens Studio
Tailwind Preset
Tailwind CSS theme preset, import directly in config
Global CSS
CSS variables and base styles
shadcn Theme
shadcn/ui theme configuration
CSS Variables
Pure CSS variables, works with any project
SKILL.md
Loadable skill pack for Cursor / Claude Code / VS Code
Card Stack is a layout approach that creates depth perception using the Z-axis, with multiple cards overlapping front to back to form visual layers.
WCAG 2.1 compliance analysis based on color contrast and typography readability.
Overall Score
Grade: B - Good
Contrast Ratios
| Context | Colors | Ratio | AA | AAA |
|---|---|---|---|---|
| Text on secondary background | /#18181b / #ffffff | 17.72:1 | ||
| Button primary | /#ffffff / #18181b | 17.72:1 | ||
| Text on accent 1 | /#18181b / #6c5ce7 | 3.65:1 | ||
| Text on accent 2 | /#18181b / #00cec9 | 9:1 | ||
| Text on accent 3 | /#18181b / #fd79a8 | 7.15:1 | ||
| Text on accent 4 | /#18181b / #ffeaa7 | 14.83:1 |
Readability
Score
85/100
Font Size
text-sm md:text-base
Font Weight
font-bold tracking-tight
Line Height
default
Scoring is based on WCAG 2.1 standards. AA requires 4.5:1 contrast for normal text, 3:1 for large text; AAA requires 7:1 for normal text, 4.5:1 for large text.
Design Recipes
These curated recipes combine this style with layouts and animations, optimized for specific use cases.