Best For
黑色电影 / 明暗对比 / 光影
Film Noir
A dramatic visual style drawn from classic 1940-50s film noir. Extreme light-dark contrast, deep grayscale layers, diagonal shadows, and a mysterious atmosphere, suited for story-driven products, photography portfolios, and premium brands.
Best For
黑色电影 / 明暗对比 / 光影
Primary Move
Use deep black backgrounds bg-[#0a0a0a] or bg-neutral-950
Watch Out
Do not use colorful backgrounds
Showcase Entry
Live preview of the showcase page. Click to explore the full experience.
Color Palette
Primary
#1a1a1a
Secondary
#f5f5f0
Accent 1
#c41e3a
Accent 2
#8b7355
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: Film Noir
style_slug: film-noir
style_source: /styles/film-noir
# 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
# 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
```
### 交互效果
```
悬停位移: undefined
过渡动画: transition-colors duration-500
按下状态: active:scale-95
```
### 字体
```
标题: font-serif italic
正文: font-sans
```
### 字号
```
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
```
---
## [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] 错误 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="font-serif italic tracking-wide transition-colors 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="bg-neutral-900 relative overflow-hidden p-8">
<h3 class="font-serif italic text-xl md:text-2xl">标题</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-neutral-950 border-b font-serif focus:outline-none 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 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.
```Preserves style direction, allows flexible implementation
STYLEKIT_STYLE_REFERENCE
style_name: Film Noir
style_slug: film-noir
style_source: /styles/film-noir
# Soft Prompt
Maintain the overall style essence. Implementation details can be adjusted flexibly, but do not deviate from the core visual language.
## Style Signals
- 黑色电影
- 明暗对比
- 光影
- 戏剧
- 复古
- 神秘
## Prefer
- Use deep black backgrounds bg-[#0a0a0a] or bg-neutral-950
- Text uses gray-white colors text-neutral-100 text-neutral-300
- Use serif fonts for headings font-serif italic
- Cards use extremely subtle gray to distinguish layers bg-neutral-900 bg-neutral-800
## Avoid
- Do not use colorful backgrounds
- Do not use high-saturation colors (crimson only as accent)
- Do not use overly large rounded corners rounded-2xl+
## Output Guidance
- Ensure overall style recognizability first, then refine details.
- Avoid over-engineering; maintain readability and maintainability.Component Templates
光束扫射按钮:group 包裹,白色对角光束从左扫到右(duration-700),hover 时极端明暗翻转(dark→light),active:scale-[0.98] 触觉确认
/* 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 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
Film Noir style draws from the visual language of 1940-50s Hollywood film noir.
WCAG 2.1 compliance analysis based on color contrast and typography readability.
Overall Score
Grade: D - Poor
Contrast Ratios
Readability
Score
80/100
Font Size
text-sm md:text-base
Font Weight
font-serif italic
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.