适合场景
黑色电影 / 明暗对比 / 光影
源自 1940-50 年代经典黑色电影的戏剧性视觉风格。极致的明暗对比、深沉的灰阶层次、斜线光影和神秘氛围,适合故事驱动的产品、摄影作品集和高端品牌。
适合场景
黑色电影 / 明暗对比 / 光影
设计重点
背景使用深黑 bg-[#0a0a0a] 或 bg-neutral-950
注意事项
禁止使用彩色背景
AI 实现文档
默认用硬性提示词让 AI 直接生成前端;Design Spec 用来理解、改写和审核风格;Creative Brief 用来早期探索方向。
默认使用它:复制后追加具体需求,让 AI 直接生成一致、可落地的前端。
什么时候用
怎么用
STYLEKIT_STYLE_REFERENCE
style_name: 黑色电影
style_slug: film-noir
style_source: /styles/film-noir
# Hard Prompt
## 什么时候用
当你希望 AI 严格按风格规则生成代码时使用。它是生产界面最稳的默认选择。
## 怎么用
- 把完整提示词复制到 ChatGPT、Claude、Cursor 或其他编码助手。
- 在提示词后追加具体产品、页面或组件需求。
- 生成后按禁止项和交互状态检查,确认没有风格漂移。
请严格遵守以下风格规则并保持一致性,禁止风格漂移。
## 执行要求
- 优先保证风格一致性,其次再做创意延展。
- 遇到冲突时以禁止项为最高优先级。
- 输出前自检:颜色、排版、间距、交互是否仍属于该风格。
## Style Rules
STYLE: Film Noir
TYPE: Dramatic high-contrast monochrome interface
## 必须遵守
- 背景使用深黑 bg-[#0a0a0a] 或 bg-neutral-950
- 文字使用灰白色 text-neutral-100 text-neutral-300
- 使用衬线字体作标题 font-serif italic
- 卡片使用极微妙的灰色区分层次 bg-neutral-900 bg-neutral-800
- 强调元素使用猩红色 text-[#c41e3a](极少量)
- 使用线性渐变模拟光影效果
- 边框极细或无边框 border-neutral-800
- hover 效果使用亮度变化而非颜色变化
- 按钮使用 group 包裹,内置光束扫射层 (-translate-x-[200%] → group-hover:translate-x-[200%])
- active:scale-[0.98] 触觉按压确认
- focus:ring-2 focus:ring-neutral-400 focus:ring-offset-2 focus:ring-offset-neutral-950
- 猩红色血线:w-12 h-[2px] bg-[#c41e3a],group-hover:w-full 扩展(duration-700)
## 绝对禁止
- 禁止使用彩色背景
- 禁止使用高饱和度颜色(猩红仅作点缀)
- 禁止使用圆角过大 rounded-2xl+
- 禁止使用卡通/可爱元素
- 禁止使用阴影发光效果
- 禁止使用渐变按钮
- 禁止按钮缺少 active:scale-[0.98](无触觉确认=按钮如同装饰)
- 禁止 focus:ring 缺少 focus:ring-offset-neutral-950(深色背景上焦点环必须与元素分离才可见)
- 禁止动画 duration 低于 300ms(Noir 节奏是慢戏剧性的,不是利落的)
COLOR SYSTEM:
- Background: #0a0a0a (near black)
- Card: neutral-900
- Card border hover: neutral-600 (from neutral-800)
- Text primary: neutral-100 → white on group-hover
- Text secondary: neutral-400 → neutral-300 on group-hover
- Text muted: neutral-500
- Crimson accent: #c41e3a (very sparingly)
- Gold accent: #d4af37 (very sparingly)
- Borders: neutral-700 to neutral-800
## Animation & Interaction Rules
- Light Shaft Sweep: ALL buttons use group class. Inside, an absolute div with bg-gradient-to-r from-transparent via-white/30 to-transparent starts at -translate-x-[200%] skew-x-[-20deg] and sweeps to translate-x-[200%] on group-hover. Use transition-transform duration-700 ease-in-out. The skew creates a diagonal "flashlight beam" effect. The sweep is slow and deliberate — this is noir, not a sprint.
- Harsh Monochrome Swap: Primary button hover does hover:bg-neutral-100 hover:text-neutral-950 hover:border-neutral-100. This is a complete binary inversion (dark→light), not a gradual shade change. The abruptness reflects 40s film drama where scenes cut hard between shadow and light.
- Venetian Blinds Pattern: Cards have an absolute overlay with bg-[repeating-linear-gradient(180deg,transparent,transparent_4px,#fff_4px,#fff_6px)] at opacity-0, transitioning to group-hover:opacity-[0.06]. This is barely perceptible — like light filtering through half-closed window blinds in a detective's office.
- Crimson Bleed: Cards include a horizontal line w-12 h-[2px] bg-[#c41e3a] that expands to group-hover:w-full over duration-700 ease-out. Simulates blood spreading, or a film title card's crimson underline unfurling.
- Text Reveal: Card headings and body text brighten on group-hover (neutral-100→white, neutral-400→neutral-300) using transition-colors duration-500. Combined with venetian blinds pattern, creates the effect of light falling on text.
- Tactile Confirmation: ALL buttons must use active:scale-[0.98].
- Focus Ring Dark: Always use focus:ring-2 focus:ring-neutral-400 focus:ring-offset-2 focus:ring-offset-neutral-950.
- Slow Easing: Buttons use duration-500. Cards use duration-700. The sweeping light shaft uses duration-700 ease-in-out. NEVER use duration below 300ms — slowness is inherent to noir's dramatic weight.
## Self-Check
After generating code, verify:
1. All buttons are wrapped in group, have the light shaft sweep div inside
2. All buttons have active:scale-[0.98]
3. All focusable elements have focus:ring-offset-neutral-950
4. Cards have venetian blinds overlay (opacity-0 → group-hover:opacity-[0.06])
5. Cards have crimson bleed line (w-12 → group-hover:w-full)
6. No animation duration below 300ms
7. No rounded-2xl or larger
---
# Film Noir (黑色电影) Design System
> 源自 1940-50 年代经典黑色电影的戏剧性视觉风格。极致的明暗对比、深沉的灰阶层次、斜线光影和神秘氛围,适合故事驱动的产品、摄影作品集和高端品牌。
## 核心理念
Film Noir 风格取自 1940-50 年代好莱坞黑色电影的视觉语言。
核心理念:
- 极致对比:深黑与亮白之间几乎没有中间地带,制造戏剧张力
- 光影叙事:斜线阴影、窗棂光影、聚光灯效果讲述故事
- 灰阶主导:以黑白灰为主色调,仅用极少量点缀色(猩红、金色)
- 排版古典:使用衬线标题 + 无衬线正文,呼应老式报刊美学
- 神秘氛围:信息隐约可见,吸引用户深入探索
设计原则:
- 视觉一致性:所有组件必须遵循统一的视觉语言,从色彩到字体到间距保持谐调
- 层次分明:通过颜色深浅、字号大小、留白空间建立清晰的信息层级
- 交互反馈:每个可交互元素都必须有明确的 hover、active、focus 状态反馈
- 响应式适配:设计必须在移动端、平板、桌面端上保持一致的体验
- 无障碍性:确保色彩对比度符合 WCAG 2.1 AA 标准,所有交互元素可键盘访问
---
## Token 字典(精确 Class 映射)
### 边框
```
宽度: border-b
颜色: border-neutral-800
圆角: rounded-none
```
### 阴影
```
小: shadow-sm
中: shadow-md
大: shadow-lg
悬停: shadow-lg
聚焦: ring-1 ring-neutral-600
```
### 交互效果
```
悬停位移: (无)
悬停缩放: hover:bg-neutral-800/80
悬停透明度: (无)
过渡动画: transition-colors duration-500
按下状态: active:scale-95
```
### 字体
```
标题: font-serif italic
正文: font-sans
等宽: font-mono
```
### 字号
```
Hero: text-5xl md:text-7xl lg:text-8xl
H1: text-4xl md:text-5xl
H2: text-2xl md:text-3xl
H3: text-xl md:text-2xl
正文: text-sm md:text-base
小字: text-xs
```
### 间距
```
Section: py-20 md:py-32
容器: px-8 md:px-12
卡片: p-8
小间距: gap-4
中间距: gap-6
大间距: gap-10
```
### 颜色角色
```
背景主色: bg-[#0a0a0a]
背景辅色: bg-neutral-900
背景强调色: bg-neutral-800, bg-[#c41e3a]
正文主色: text-neutral-100
正文辅色: text-neutral-400
正文弱化色: text-neutral-600
按钮主色: bg-neutral-100 text-neutral-950
按钮辅色: bg-transparent border border-neutral-500 text-neutral-300
```
---
## [FORBIDDEN] 绝对禁止
以下 class 在本风格中**绝对禁止使用**,生成时必须检查并避免:
### 禁止的 Class
- `bg-blue-`
- `bg-green-`
- `bg-pink-`
- `bg-purple-`
- `bg-yellow-`
- `rounded-2xl`
- `rounded-3xl`
- `rounded-full`
- `shadow-[0_0_`
- `text-shadow`
- `bg-gradient-to-r from-pink`
- `bg-gradient-to-r from-blue`
- `animate-bounce`
- `animate-spin`
### 禁止的模式
- 匹配 `^bg-(?:blue|green|pink|purple|yellow|cyan|teal|indigo|violet|fuchsia)-`
- 匹配 `^rounded-(?:2xl|3xl|full)`
- 匹配 `^shadow-\[0_0_`
- 匹配 `^animate-(?:bounce|spin|wiggle)`
### 禁止原因
- `bg-blue-`: Film Noir uses grayscale only; no colored backgrounds
- `rounded-2xl`: Film Noir uses sharp corners or minimal rounding
- `shadow-[0_0_`: No glow effects; use directional shadows for drama
- `animate-bounce`: Playful animations break the noir atmosphere
> WARNING: 如果你的代码中包含以上任何 class,必须立即替换。
---
## [REQUIRED] 必须包含
### 按钮必须包含
```
font-serif
italic
tracking-wide
transition-colors
```
### 卡片必须包含
```
bg-neutral-900
relative
overflow-hidden
```
### 输入框必须包含
```
bg-neutral-950
border-b
font-serif
focus:outline-none
```
---
## [COMPARE] Film Noir 错误 vs 正确对比
以下错误示例只代表“未经过当前风格适配的通用默认值”,不要把错误示例当成视觉建议。
### 按钮
[WRONG] **错误示例**(通用组件库默认样式,不要直接复制):
```html
<button class="{GENERIC_LIBRARY_BUTTON_DEFAULT}">
点击我
</button>
```
[CORRECT] **正确示例**(使用当前风格的 token):
```html
<button class="font-serif italic tracking-wide transition-colors bg-neutral-100 text-neutral-950">
点击我
</button>
```
### 卡片
[WRONG] **错误示例**(未经当前风格适配的通用卡片):
```html
<div class="{GENERIC_LIBRARY_CARD_DEFAULT}">
<h3>{TITLE}</h3>
</div>
```
[CORRECT] **正确示例**(使用当前风格的 card token):
```html
<div class="bg-neutral-900 relative overflow-hidden p-8">
<h3 class="font-serif italic text-xl md:text-2xl">{TITLE}</h3>
</div>
```
### 输入框
[WRONG] **错误示例**(未经当前风格适配的通用输入框):
```html
<input class="{GENERIC_LIBRARY_INPUT_DEFAULT}" />
```
[CORRECT] **正确示例**(使用当前风格的 input token):
```html
<input class="bg-neutral-950 border-b font-serif focus:outline-none" placeholder="{PLACEHOLDER}" />
```
---
## [TEMPLATES] Film Noir 页面骨架模板
以下骨架只使用当前风格的 token。替换 `{PLACEHOLDER}` 时,不要移除或替换这些 token:
### 导航栏骨架
```html
<nav class="bg-[#0a0a0a] text-neutral-100 border-b border-neutral-800 px-8 md:px-12">
<div class="flex items-center justify-between max-w-6xl mx-auto gap-6">
<a href="/" class="font-serif italic text-xl md:text-2xl">
{LOGO_TEXT}
</a>
<div class="flex gap-6 font-sans text-xs">
{NAV_LINKS}
</div>
</div>
</nav>
```
### Hero 区块骨架
```html
<section class="bg-neutral-800 text-neutral-100 py-20 md:py-32 px-8 md:px-12">
<div class="max-w-4xl mx-auto">
<h1 class="font-serif italic text-5xl md:text-7xl lg:text-8xl">
{HEADLINE}
</h1>
<p class="font-sans text-sm md:text-base max-w-xl">
{SUBHEADLINE}
</p>
<button class="font-serif italic tracking-wide transition-colors bg-neutral-100 text-neutral-950">
{CTA_TEXT}
</button>
</div>
</section>
```
### 卡片网格骨架
```html
<section class="bg-[#0a0a0a] text-neutral-100 py-20 md:py-32 px-8 md:px-12">
<div class="max-w-6xl mx-auto">
<h2 class="font-serif italic text-2xl md:text-3xl">{SECTION_TITLE}</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Card template - repeat for each card -->
<div class="bg-neutral-900 relative overflow-hidden p-8">
<h3 class="font-serif italic text-xl md:text-2xl">{CARD_TITLE}</h3>
<p class="font-sans text-sm md:text-base text-neutral-600">{CARD_DESCRIPTION}</p>
</div>
</div>
</div>
</section>
```
### 表单输入骨架
```html
<input class="bg-neutral-950 border-b font-serif focus:outline-none" placeholder="{PLACEHOLDER}" />
```
### 页脚骨架
```html
<footer class="bg-neutral-900 text-neutral-400 py-20 md:py-32 px-8 md:px-12">
<div class="max-w-6xl mx-auto">
<div class="grid grid-cols-1 md:grid-cols-3 gap-10">
<div>
<span class="font-serif italic text-xl md:text-2xl">{LOGO_TEXT}</span>
<p class="font-sans text-xs">{TAGLINE}</p>
</div>
<div>
<h4 class="font-serif italic text-xl md:text-2xl">{COLUMN_TITLE}</h4>
<ul class="font-sans text-xs">
{FOOTER_LINKS}
</ul>
</div>
</div>
</div>
</footer>
```
---
## [CHECKLIST] Film Noir 生成后自检清单
**输出代码前,逐项验证当前风格的 token 和规则。如有违反,先修正再交付:**
### Token 检查
- [ ] 按钮包含: `font-serif italic tracking-wide transition-colors`
- [ ] 卡片包含: `bg-neutral-900 relative overflow-hidden`
- [ ] 输入框包含: `bg-neutral-950 border-b font-serif focus:outline-none`
### 禁止项检查
- [ ] 没有使用 `bg-blue-`
- [ ] 没有使用 `bg-green-`
- [ ] 没有使用 `bg-pink-`
- [ ] 没有使用 `bg-purple-`
- [ ] 没有使用 `bg-yellow-`
- [ ] 没有使用 `rounded-2xl`
- [ ] 没有使用 `rounded-3xl`
- [ ] 没有使用 `rounded-full`
### 风格规则检查
- [ ] 背景使用深黑 bg-[#0a0a0a] 或 bg-neutral-950
- [ ] 文字使用灰白色 text-neutral-100 text-neutral-300
- [ ] 使用衬线字体作标题 font-serif italic
- [ ] 卡片使用极微妙的灰色区分层次 bg-neutral-900 bg-neutral-800
- [ ] 强调元素使用猩红色 text-[#c41e3a](极少量)
### 风格漂移检查
- [ ] 没有违反:禁止使用彩色背景
- [ ] 没有违反:禁止使用高饱和度颜色(猩红仅作点缀)
- [ ] 没有违反:禁止使用圆角过大 rounded-2xl+
- [ ] 没有违反:禁止使用卡通/可爱元素
- [ ] 没有违反:禁止使用阴影发光效果
### 通用交付检查
- [ ] 响应式布局在手机、平板和桌面下稳定,没有横向溢出
- [ ] 所有交互元素有清晰焦点、可访问名称和 reduced-motion 方案
- [ ] 文本对比度达到 WCAG AA,且没有用颜色单独传递状态
- [ ] 结果仍然能够一眼识别为 Film Noir
---
## [EXAMPLES] 示例 Prompt
### 1. 侦探故事集
黑白灰调的故事驱动作品展示
```
Create a detective story portfolio using Film Noir style:
- Near-black background with subtle grey card layers
- Serif italic headings for dramatic titles
- Diagonal light shaft effects across cards
- Minimal crimson accent lines for emphasis
- Uppercase tracking labels for metadata
- Vintage newspaper-inspired typography
- Mysterious atmospheric hover effects
```
### 2. SaaS 着陆页
生成 黑色电影风格的 SaaS 产品着陆页
```
Create a SaaS landing page using Film Noir style with hero section, feature grid, testimonials, pricing table, and footer.
```
### 3. 作品集展示
生成 黑色电影风格的作品集页面
```
Create a portfolio showcase page using Film Noir style with project grid, about section, contact form, and consistent visual language.
```
## 绝对禁止(匹配即拒绝)
以下模式一旦出现,视为风格违规——不找借口,直接重写。
- 使用彩色背景
- 使用高饱和度颜色(猩红仅作点缀)
- 使用圆角过大 rounded-2xl+
- 使用卡通/可爱元素
- 使用阴影发光效果
- 使用渐变按钮
- 按钮缺少 active:scale-[0.98](无触觉确认=按钮如同装饰)
- focus:ring 缺少 focus:ring-offset-neutral-950(深色背景上焦点环必须与元素分离才可见)
## 自检清单(交付前逐条确认)
如果任何一条不通过,说明风格漂移了——修改后再交付。
- [ ] 没有紫色到蓝色的渐变
- [ ] 没有使用 Inter / Roboto / Geist 等过度使用的字体
- [ ] 没有嵌套卡片(卡片里面套卡片)
- [ ] 没有在彩色背景上放灰色文字
- [ ] 正文对比度满足 WCAG AA(≥4.5:1)
- [ ] 没有 bounce / elastic 缓动曲线
- [ ] 动效有 prefers-reduced-motion 备选方案
- [ ] 正文行宽不超过 65-75 个字符
- [ ] 没有单侧粗边框装饰(border-left/right accent stripe)
- [ ] 没有渐变文字(background-clip: text)
- [ ] 没有把玻璃态(glassmorphism)当作默认风格
- [ ] 没有 tiny uppercase tracked eyebrow 放在每个 section 标题上面
- [ ] 禁止使用彩色背景
- [ ] 禁止使用高饱和度颜色(猩红仅作点缀)
- [ ] 禁止使用圆角过大 rounded-2xl+
- [ ] 禁止使用卡通/可爱元素
- [ ] 禁止使用阴影发光效果更多提示词库:全部 UI 提示词 · Tailwind UI 提示词 · 暗色模式提示词
组件模板
光束扫射按钮:group 包裹,白色对角光束从左扫到右(duration-700),hover 时极端明暗翻转(dark→light),active:scale-[0.98] 触觉确认
真实前端完成度
这层检查这个风格是否已经具备真实网站常见的主题、状态反馈、键盘可访问性和性能约束。
总体覆盖
58%
Fallback 规则
暗色模式
35%
通用组件状态
79%
部分动效规则
70%
部分可访问性
70%
部分性能代价
35%
通用按钮
默认 / 悬停 / 键盘焦点 / 按下 / 禁用
输入框
默认 / 悬停 / 键盘焦点 / 禁用 / 错误
卡片
默认 / 悬停 / 键盘焦点 / 加载中 / 骨架屏
表单
默认 / 键盘焦点 / 禁用 / 加载中 / 错误
常见问题
/* Film Noir Global Styles */
@layer base {
body {
@apply bg-[#0a0a0a] text-neutral-300 antialiased;
}
h1, h2, h3 {
@apply font-serif italic;
}
::selection {
@apply bg-neutral-300 text-neutral-950;
}
}
@keyframes noir-spotlight {
0%, 100% { opacity: 0.05; }
50% { opacity: 0.1; }
}
@keyframes noir-fade-in {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* Film Noir Design Tokens */
:root {
--film-noir-primary: #1a1a1a;
--film-noir-secondary: #f5f5f0;
--film-noir-accent: #c41e3a;
--film-noir-glow: rgba(26, 26, 26, 0.3);
}
.film-noir-card {
position: relative;
overflow: hidden;
}
.film-noir-card::before {
content: "";
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.3s ease;
background: linear-gradient(135deg, rgba(26, 26, 26, 0.05), transparent);
pointer-events: none;
}
.film-noir-card:hover::before {
opacity: 1;
}
.film-noir-gradient {
background: linear-gradient(135deg, #1a1a1a, #c41e3a);
}
.film-noir-gradient-text {
background: linear-gradient(135deg, #1a1a1a, #c41e3a);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.film-noir-frosted {
backdrop-filter: blur(12px) saturate(180%);
-webkit-backdrop-filter: blur(12px) saturate(180%);
background: rgba(26, 26, 26, 0.08);
}
.film-noir-accent-corner {
clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2rem), calc(100% - 2rem) 100%, 0 100%);
}
.film-noir-animate-in {
animation: film-noir-fade-in 0.5s ease-out both;
}IDE 集成
下载 AI 编码助手的配置文件,使其按照此风格生成代码。
风格包
获取完整的可机器读取风格资源,包括 Design Tokens、Tailwind 预设、CSS 变量和 shadcn/ui 主题。
Metadata
Style metadata including version information
Design Tokens
Figma / Style Dictionary / Tokens Studio 兼容
Tailwind Preset
Tailwind CSS 主题预设,可直接在配置中引用
Global CSS
包含 CSS 变量和基础样式
shadcn Theme
shadcn/ui 主题配置
CSS Variables
纯 CSS 变量,适用于任何项目
SKILL.md
可加载到 Cursor / Claude Code / VS Code 的技能包
Film Noir 风格取自 1940-50 年代好莱坞黑色电影的视觉语言。
基于颜色对比度和排版可读性的 WCAG 2.1 合规分析。
综合评分
等级: D - 较差
对比度
可读性
分数
80/100
字号
text-sm md:text-base
字重
font-serif italic
行高
default
评分基于 WCAG 2.1 标准。AA 级要求普通文本对比度 4.5:1、大文本 3:1;AAA 级要求普通文本 7:1、大文本 4.5:1。