Best For
光学 / 幻觉 / 视觉
Op Art
Op Art movement style that uses geometric patterns to create optical illusions and a sense of motion. Black-and-white contrast at its core, supplemented by vibrating color pairs.
Best For
光学 / 幻觉 / 视觉
Primary Move
Use pure black-and-white high contrast bg-black text-white bg-white text-black
Watch Out
Do not use dense optical patterns over large areas causing visual fatigue
Showcase Entry
Live preview of the showcase page. Click to explore the full experience.
Color Palette
Primary
#000000
Secondary
#ffffff
Accent 1
#ff3300
Accent 2
#0066ff
Prompts
Use one-click prompts to generate 欧普艺术 style UIs. Hard mode enforces strict constraints; soft mode keeps overall style direction while allowing flexibility.
Strict constraints for high style consistency
STYLEKIT_STYLE_REFERENCE
style_name: 欧普艺术
style_slug: op-art
style_source: /styles/op-art
# Hard Prompt
请严格遵守以下风格规则并保持一致性,禁止风格漂移。
## 执行要求
- 优先保证风格一致性,其次再做创意延展。
- 遇到冲突时以禁止项为最高优先级。
- 输出前自检:颜色、排版、间距、交互是否仍属于该风格。
## Style Rules
# Op Art (欧普艺术) Design System
> 光学艺术运动风格,利用几何图案制造视觉幻象和运动感。黑白对比为核心,辅以振动色彩对。
## 核心理念
Op Art(光学艺术)兴起于1960年代,以Bridget Riley和Victor Vasarely为代表。它利用精密的几何图案在二维平面上制造运动、振动和深度的视觉幻象,挑战观者的感知系统。
Op Art的核心在于"视觉张力":当黑与白以特定频率和角度交替排列时,人眼会产生运动错觉。同心圆、棋盘格、莫尔条纹、渐变线条——这些看似简单的元素经过精密计算后,能让静止的画面"活"起来。
配色上,Op Art以纯黑与纯白的极端对比为基础。当需要色彩时,选择"振动色彩对"——红与蓝、黄与紫——这些互补色并置时会在视网膜上产生振荡效应,让观者感到不安定的能量。
在界面设计中,Op Art风格需要克制使用。大面积的光学图案容易造成视觉疲劳,因此通常作为局部装饰或背景纹理出现,搭配大面积留白和清晰的信息层次。
排版追求极简与几何感:无衬线字体、均匀字重、严格网格对齐。文字本身不应与光学图案竞争注意力,而是作为图案海洋中的"安全岛"——清晰、稳定、可读。
---
## Token 字典(精确 Class 映射)
### 边框
```
宽度: border-2
颜色: border-black
圆角: rounded-none
```
### 阴影
```
小: shadow-none
中: shadow-[4px_4px_0_#000000]
大: shadow-[6px_6px_0_#000000]
悬停: hover:shadow-[4px_4px_0_#000000]
聚焦: focus:shadow-[4px_4px_0_#000000]
```
### 交互效果
```
悬停位移: undefined
过渡动画: transition-colors duration-200
按下状态: active:translate-x-[2px] active:translate-y-[2px]
```
### 字体
```
标题: font-sans font-bold uppercase tracking-[0.3em]
正文: font-sans font-medium
```
### 字号
```
Hero: text-6xl md:text-8xl lg:text-9xl
H1: text-4xl md:text-6xl
H2: text-2xl md:text-4xl
H3: text-xl md:text-2xl
正文: text-sm md:text-base
小字: text-xs md:text-sm
```
### 间距
```
Section: py-16 md:py-28 lg:py-36
容器: px-6 md:px-12 lg:px-20
卡片: p-8
```
---
## [FORBIDDEN] 绝对禁止
以下 class 在本风格中**绝对禁止使用**,生成时必须检查并避免:
### 禁止的 Class
- `font-serif`
- `rounded-sm`
- `rounded`
- `rounded-md`
- `rounded-lg`
- `rounded-xl`
- `rounded-2xl`
- `rounded-full`
- `shadow-sm`
- `shadow`
- `shadow-md`
- `shadow-lg`
- `shadow-xl`
- `bg-gradient-to-r`
- `bg-gradient-to-l`
- `bg-gradient-to-b`
- `bg-gradient-to-t`
- `backdrop-blur`
- `backdrop-blur-sm`
- `backdrop-blur-md`
### 禁止的模式
- 匹配 `^font-serif$`
- 匹配 `^rounded-(?!none)`
- 匹配 `^shadow-(?:sm|md|lg|xl|2xl)$`
- 匹配 `^bg-gradient-`
- 匹配 `^backdrop-blur`
- 匹配 `^opacity-(?:[1-4]\d|50)$`
### 禁止原因
- `font-serif`: Op Art uses clean geometric sans-serif typography (font-sans)
- `rounded-lg`: Op Art demands sharp geometric edges for optical precision (rounded-none)
- `shadow-md`: Op Art is flat and graphic; soft shadows break the 2D illusion
- `bg-gradient-to-r`: Op Art uses hard-edge flat colors for maximum contrast
- `backdrop-blur`: Op Art avoids blur effects that soften the precise geometric patterns
> WARNING: 如果你的代码中包含以上任何 class,必须立即替换。
---
## [REQUIRED] 必须包含
### 按钮必须包含
```
rounded-none
border-2 border-black
font-sans font-medium uppercase tracking-[0.3em]
transition-colors duration-200
```
### 卡片必须包含
```
rounded-none
border-2 border-black
bg-white
```
### 输入框必须包含
```
rounded-none
border-2 border-black
bg-white
text-black
font-sans font-medium uppercase tracking-wider
focus:border-[#ff3300]
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="rounded-none border-2 border-black font-sans font-medium uppercase tracking-[0.3em] transition-colors duration-200 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-none border-2 border-black bg-white p-8">
<h3 class="font-sans font-bold uppercase tracking-[0.3em] 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="rounded-none border-2 border-black bg-white text-black font-sans font-medium uppercase tracking-wider focus:border-[#ff3300] 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. 视觉艺术展览页面
光学艺术风格的展览展示页面
```
用 Op Art 风格创建一个艺术展览页面,要求:
1. 背景:纯白 + 局部黑白光学图案装饰
2. 标题:黑色无衬线大写 + 宽字距
3. 装饰:同心圆 + 条纹 + 棋盘格(克制使用)
4. 按钮:黑白反转悬停效果
5. 整体干净锐利,视觉张力集中在局部
```
### 2. SaaS 着陆页
生成 欧普艺术风格的 SaaS 产品着陆页
```
Create a SaaS landing page using Op Art style with hero section, feature grid, testimonials, pricing table, and footer.
```
### 3. 作品集展示
生成 欧普艺术风格的作品集页面
```
Create a portfolio showcase page using Op Art style with project grid, about section, contact form, and consistent visual language.
```Flexible constraints for quick ideation
STYLEKIT_STYLE_REFERENCE
style_name: 欧普艺术
style_slug: op-art
style_source: /styles/op-art
# Soft Prompt
保持整体风格气质即可,允许实现细节灵活调整,但不要偏离核心视觉语言。
## Style Signals
- 光学
- 幻觉
- 视觉
- 运动感
- 几何
- 黑白
## Prefer
- 使用纯黑白高对比 bg-black text-white bg-white text-black
- 使用几何图案元素——同心圆、条纹、棋盘格作为装饰
- 使用振动色彩对作为点缀 text-[#ff3300] bg-[#0066ff] text-[#ffcc00]
- 使用极简无衬线字体 font-sans font-medium
## Avoid
- 禁止在大面积使用密集光学图案导致视觉疲劳
- 禁止使用柔和渐变 bg-gradient-to-r 削弱对比度
- 禁止使用柔和阴影 shadow-sm shadow-md 破坏平面感
## Output Guidance
- 先保证整体风格识别度,再优化细节。
- 避免过度炫技,保持可读性与可维护性。Component Templates
欧普艺术风格按钮,Harsh Strobe 黑白硬切 + Brutal Action 警示红闪爆
/* Op Art 全局样式 */
:root {
--op-black: #000000;
--op-white: #ffffff;
--op-red: #ff3300;
--op-blue: #0066ff;
--op-yellow: #ffcc00;
}
/* 同心圆图案 */
.op-concentric {
background-image: repeating-radial-gradient(
circle at center,
transparent 0px,
transparent 8px,
var(--op-black) 8px,
var(--op-black) 10px
);
}
/* 棋盘格 */
.op-checkerboard {
background-image:
linear-gradient(45deg, var(--op-black) 25%, transparent 25%),
linear-gradient(-45deg, var(--op-black) 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, var(--op-black) 75%),
linear-gradient(-45deg, transparent 75%, var(--op-black) 75%);
background-size: 20px 20px;
background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
}
/* 条纹图案 */
.op-stripes {
background-image: repeating-linear-gradient(
0deg,
var(--op-black) 0px,
var(--op-black) 4px,
var(--op-white) 4px,
var(--op-white) 8px
);
}
/* 莫尔条纹效果 */
.op-moire {
background-image:
repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.1) 2px, rgba(0,0,0,0.1) 4px),
repeating-linear-gradient(90deg, transparent, transparent 2px, rgba(0,0,0,0.1) 2px, rgba(0,0,0,0.1) 4px);
}
/* 振动色彩边框 */
.op-vibrant-border {
border: 3px solid var(--op-red);
outline: 3px solid var(--op-blue);
outline-offset: 3px;
}
@keyframes op-art-fade-in {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes op-art-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.op-art-card {
position: relative;
overflow: hidden;
}
.op-art-card::before {
content: "";
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.3s ease;
background: linear-gradient(135deg, rgba(0, 0, 0, 0.05), transparent);
pointer-events: none;
}
.op-art-card:hover::before {
opacity: 1;
}
.op-art-frosted {
backdrop-filter: blur(12px) saturate(180%);
-webkit-backdrop-filter: blur(12px) saturate(180%);
background: rgba(0, 0, 0, 0.08);
}
.op-art-accent-corner {
clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2rem), calc(100% - 2rem) 100%, 0 100%);
}
.op-art-animate-in {
animation: op-art-fade-in 0.5s ease-out both;
}IDE Integration
Download config files for your AI coding assistant to generate code following this style.
Style Pack
Get the 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
Op Art (Optical Art) emerged in the 1960s, championed by Bridget Riley and Victor Vasarely. It uses precisely calculated geometric patterns to create visual illusions of movement, vibration, and depth on a two-dimensional surface, challenging the viewer's perceptual system.
WCAG 2.1 compliance analysis based on color contrast ratios and typography readability.
Overall Score
Grade: C - Fair
Contrast Ratios
| Context | Colors | Ratio | AA | AAA |
|---|---|---|---|---|
| Text on background | /#000000 / #ffffff | 21:1 | ||
| Secondary text on background | /#ffffff / #ffffff | 1:1 | ||
| Text on secondary background | /#000000 / #000000 | 1:1 | ||
| Secondary text on secondary | /#ffffff / #000000 | 21:1 | ||
| Button primary | /#ffffff / #000000 | 21:1 | ||
| Text on accent 1 | /#000000 / #ff3300 | 5.73:1 | ||
| Alt text on accent 1 | /#ffffff / #ff3300 | 3.67:1 | ||
| Text on accent 2 | /#000000 / #0066ff | 4.34:1 | ||
| Alt text on accent 2 | /#ffffff / #0066ff | 4.83:1 | ||
| Text on accent 3 | /#000000 / #ffcc00 | 13.89:1 | ||
| Alt text on accent 3 | /#ffffff / #ffcc00 | 1.51:1 |
Readability
Score
87/100
Font Size
text-sm md:text-base
Font Weight
font-sans font-bold uppercase tracking-[0.3em]
Line Height
default
Scores are based on WCAG 2.1 guidelines. AA requires 4.5:1 contrast for normal text and 3:1 for large text. AAA requires 7:1 for normal text and 4.5:1 for large text.
Further Reading
This section is better for readers who already like the direction and want more depth.