返回风格库
视觉风格expressive

新野兽派

Neo-Brutalist

大胆的黑色粗边框、硬边缘阴影、无圆角、高对比度配色。源于建筑野兽派,强调功能与原始美学。

新野兽派视觉预览
主色#000000
次色#ffffff
强调色 1#ff006e
强调色 2#ccff00
强调色 3#00d9ff
强调色 4#ff9500

AI 实现规则

你是一个 Neo-Brutalist 设计风格的前端开发专家。生成的所有代码必须严格遵守以下约束:

## 绝对禁止

- 圆角:rounded-lg, rounded-md, rounded-xl, rounded-full(用于装饰圆除外)
- 模糊阴影:shadow-lg, shadow-xl, shadow-2xl, shadow-md
- 渐变:bg-gradient-*
- 灰色边框:border-gray-*, border-slate-*
- 淡入淡出的半透明效果

## 必须遵守

- 无圆角或 rounded-none
- 硬边缘阴影 shadow-[Xpx_Xpx_0px_0px_rgba(0,0,0,1)]
- 纯黑边框 border-black
- hover 时阴影消失 + translate 位移
- 标题 font-black,正文 font-mono

## 配色

主色:黑 #000000、白 #ffffff
强调色:
- accent-pink: #ff006e(CTA、hover)
- accent-green: #ccff00(成功、装饰)
- accent-blue: #00d9ff(链接、信息)
- accent-yellow: #ff9500(标签、警示)

## 响应式规则

所有样式必须包含移动端和桌面端两套值:
- 间距:p-4 md:p-8, py-12 md:py-32
- 边框:border-2 md:border-4
- 阴影:shadow-[4px] md:shadow-[8px]
- 字号:text-sm md:text-base, text-xl md:text-3xl
- 移动端约为桌面端的 50%

## Animation & Interaction Rules

- Physical Crushing: 按钮 active:translate-x-[Npx] active:translate-y-[Npx] active:shadow-none,N 必须等于原始阴影像素值,实现实体完全压平的碾压感。
- Brutal Snap: hover 时瞬间切换高对比背景色(如 hover:bg-[#ffff00]),duration-150 ease-out,禁止渐变或 opacity 过渡——必须是硬切。
- Zero Rounding Easing: 所有过渡 ease-out duration-150,保持生猛的碰撞感,拒绝柔化。
- Heavy Focus: 卡片 hover 时增大阴影并换为彩色(rgba(255,0,110,1)),同时背景变色,强调物理冲击。

## 自检

每次生成代码后检查:
1. 没有圆角
2. 没有模糊阴影
3. 边框是纯黑
4. active 位移量等于阴影像素值
5. 有 md: 响应式前缀

组件预览与实现

font-black border-2 md:border-4 border-black rounded-none transition-all duration-200 bg-[#ff006e] text-white shadow-[4px_4px_0px_0px_rgba(0,0,0,1)] md:shadow-[8px_8px_0px_0px_rgba(0,0,0,1)] hover:shadow-none hover:translate-x-[2px] hover:translate-y-[2px] md:hover:translate-x-1 md:hover:translate-y-1 active:translate-x-[4px] active:translate-y-[4px]
button

按钮

Neo-Brutalist 风格的按钮,Physical Crushing 完全压平 + Brutal Snap 生猛反馈

<button className="
  bg-[#ff006e] text-white font-black uppercase text-lg
  px-8 py-4
  border-4 border-black
  shadow-[6px_6px_0px_0px_rgba(0,0,0,1)]
  hover:shadow-[10px_10px_0px_0px_rgba(0,0,0,1)]
  hover:-translate-y-1 hover:-translate-x-1
  active:translate-x-[6px] active:translate-y-[6px]
  active:shadow-none
  transition-all duration-150 ease-out
">
  Click Hard
</button>
card

卡片

带有黑色边框和硬阴影的卡片组件,Brutal Snap 亮黄背景闪击 + Physical Crushing 左上偏移

<div className="
  group bg-white
  border-4 border-black
  shadow-[8px_8px_0px_0px_rgba(0,0,0,1)]
  hover:shadow-[12px_12px_0px_0px_rgba(255,0,110,1)]
  hover:-translate-y-1 hover:-translate-x-1
  hover:bg-[#ffff00]
  transition-all duration-150 ease-out
  p-8 cursor-pointer
">
  <h3 className="font-black text-xl mb-2 group-hover:tracking-wider transition-all duration-150">Neo-Brutalism</h3>
  <p className="font-mono text-base text-gray-700">
    Raw, bold, unapologetic design.
  </p>
</div>
input

输入框

Neo-Brutalist 风格的表单输入框

<input
  type="text"
  placeholder="请输入..."
  className="
    w-full
    px-3 py-2 md:px-4 md:py-3
    border-2 md:border-4 border-black
    bg-white
    font-mono text-sm md:text-base
    focus:outline-none
    focus:shadow-[4px_4px_0px_0px_rgba(0,0,0,1)]
    md:focus:shadow-[8px_8px_0px_0px_rgba(0,0,0,1)]
    transition-shadow
  "
/>
nav

导航栏

带有底部边框的导航栏

<nav className="
  bg-white
  border-2 md:border-4 border-black
  px-4 md:px-8
  py-3 md:py-4
">
  <div className="flex items-center justify-between max-w-6xl mx-auto">
    <a href="/" className="font-black text-xl md:text-2xl tracking-wider">
      LOGO
    </a>
    <div className="flex gap-4 md:gap-8">
      <a href="#" className="font-mono text-sm md:text-base hover:text-[#ff006e] transition-colors">
        首页
      </a>
      <a href="#" className="font-mono text-sm md:text-base hover:text-[#ff006e] transition-colors">
        关于
      </a>
      <a href="#" className="font-mono text-sm md:text-base hover:text-[#ff006e] transition-colors">
        联系
      </a>
    </div>
  </div>
</nav>
hero

Hero 区块

大标题的 Hero 展示区域

<section className="
  min-h-[60vh] md:min-h-[80vh]
  flex items-center
  px-4 md:px-8
  py-12 md:py-0
  bg-[#ccff00]
  border-2 md:border-4 border-black
">
  <div className="max-w-4xl mx-auto">
    <h1 className="
      font-black
      text-4xl md:text-6xl lg:text-8xl
      leading-tight
      tracking-tight
      mb-4 md:mb-6
    ">
      大胆的<br />
      设计宣言
    </h1>
    <p className="
      font-mono
      text-base md:text-xl
      max-w-xl
      mb-6 md:mb-8
    ">
      Neo-Brutalist 风格,原始而有力
    </p>
    <button className="
      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]
      md:hover:translate-x-[4px] md:hover:translate-y-[4px]
      transition-all
      text-sm md:text-base
    ">
      开始探索
    </button>
  </div>
</section>

交互展示

适用范围与设计理念

应用场景

marketingcreativeportfolio

视觉关键词

high-contrast粗边框硬阴影无圆角高对比功能主义expressiveboldvibrant表现力张力

Neo-Brutalist(新野兽派)设计风格源于建筑领域的野兽派运动,强调原始、未经修饰的功能美学。在 Web 设计中,这种风格通过大胆的黑色边框、硬边缘阴影、锐利的直角和高对比度的配色方案来表达。

核心理念:

- 功能优先:每个元素都有明确的目的

- 诚实表达:不掩饰结构,不伪装功能

- 大胆直接:用视觉冲击力传达信息

- 反对圆滑:拒绝过度精致,拥抱粗犷

设计原则:

- 视觉一致性:所有组件必须遵循统一的视觉语言,从色彩到字体到间距保持谐调

- 层次分明:通过颜色深浅、字号大小、留白空间建立清晰的信息层级

- 交互反馈:每个可交互元素都必须有明确的 hover、active、focus 状态反馈

- 响应式适配:设计必须在移动端、平板、桌面端上保持一致的体验

- 无障碍性:确保色彩对比度符合 WCAG 2.1 AA 标准,所有交互元素可键盘访问

应该这样做

  • 使用纯黑边框 border-black border-2 md:border-4
  • 使用硬边缘阴影 shadow-[4px_4px_0px_0px_rgba(0,0,0,1)] md:shadow-[8px_8px_0px_0px_rgba(0,0,0,1)]
  • 保持直角 rounded-none
  • 使用高对比度配色(黑白为主 + 鲜艳强调色)
  • 标题使用 font-black,正文使用 font-mono
  • 所有样式包含移动端和桌面端响应式值
  • 按钮 active:translate-x-[6px] active:translate-y-[6px] active:shadow-none,位移量必须等于原始阴影像素值(Physical Crushing,实体完全压平)
  • Hover 时瞬间切换高对比背景色(如 hover:bg-[#ffff00])并增大阴影(Brutal Snap,禁止使用渐变或 opacity 过渡)
  • 卡片 hover 使用 ease-out duration-150,保持生猛的碰撞感
  • 按钮 hover 时增大阴影并向左上角偏移:hover:-translate-y-1 hover:-translate-x-1 hover:shadow-[10px_10px_0px_0px_rgba(0,0,0,1)]

避免这样做

  • 禁止使用圆角 rounded-lg, rounded-md, rounded-xl
  • 禁止使用模糊阴影 shadow-lg, shadow-xl, shadow-2xl
  • 禁止使用渐变 bg-gradient-*
  • 禁止使用灰色边框 border-gray-*, border-slate-*
  • 禁止使用淡入淡出的半透明效果
  • 禁止使用 rounded-full(装饰圆除外)
  • 禁止按钮 active 状态位移量小于原始阴影像素值(未完全压平,失去碾压感)
  • 禁止 hover 背景色切换使用渐变或 opacity 过渡(必须是硬切,duration-150 ease-out)
  • 禁止按钮 hover 时仅用位移替代阴影消失(hover 应增大阴影强调力量,active 才是完全压平)

全局 CSS

/* Neo-Brutalist 全局样式 */
:root {
  --accent-pink: #ff006e;
  --accent-green: #ccff00;
  --accent-blue: #00d9ff;
  --accent-yellow: #ff9500;
}

/* 标题字体 */
h1, h2, h3, h4, h5, h6 {
  font-weight: 900;
  letter-spacing: -0.02em;
}

/* 正文字体 */
body {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

/* 选中文字样式 */
::selection {
  background: var(--accent-pink);
  color: white;
}
@keyframes neo-brutalist-fade-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes neo-brutalist-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

.neo-brutalist-card {
  position: relative;
  overflow: hidden;
}

.neo-brutalist-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;
}

.neo-brutalist-card:hover::before {
  opacity: 1;
}

.neo-brutalist-gradient {
  background: linear-gradient(135deg, #000000, #ff006e);
}

.neo-brutalist-gradient-text {
  background: linear-gradient(135deg, #000000, #ff006e);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.neo-brutalist-frosted {
  backdrop-filter: blur(12px) saturate(180%);
  -webkit-backdrop-filter: blur(12px) saturate(180%);
  background: rgba(0, 0, 0, 0.08);
}

.neo-brutalist-accent-corner {
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2rem), calc(100% - 2rem) 100%, 0 100%);
}

.neo-brutalist-animate-in {
  animation: neo-brutalist-fade-in 0.5s ease-out both;
}

布局、色板与 Tokens

主色#000000
次色#ffffff
强调色 1#ff006e
强调色 2#ccff00
强调色 3#00d9ff
强调色 4#ff9500
{
  "border": {
    "width": "border-2 md:border-4",
    "color": "border-black",
    "radius": "rounded-none",
    "style": "border-solid"
  },
  "shadow": {
    "sm": "shadow-[2px_2px_0px_0px_rgba(0,0,0,1)] md:shadow-[4px_4px_0px_0px_rgba(0,0,0,1)]",
    "md": "shadow-[4px_4px_0px_0px_rgba(0,0,0,1)] md:shadow-[8px_8px_0px_0px_rgba(0,0,0,1)]",
    "lg": "shadow-[6px_6px_0px_0px_rgba(0,0,0,1)] md:shadow-[12px_12px_0px_0px_rgba(0,0,0,1)]",
    "none": "shadow-none",
    "hover": "hover:shadow-none",
    "focus": "focus:shadow-[4px_4px_0px_0px_rgba(0,0,0,1)] md:focus:shadow-[8px_8px_0px_0px_rgba(0,0,0,1)]",
    "colored": {
      "pink": "shadow-[4px_4px_0px_0px_rgba(255,0,110,1)] md:shadow-[8px_8px_0px_0px_rgba(255,0,110,1)]",
      "green": "shadow-[4px_4px_0px_0px_rgba(204,255,0,1)] md:shadow-[8px_8px_0px_0px_rgba(204,255,0,1)]",
      "blue": "shadow-[4px_4px_0px_0px_rgba(0,217,255,1)] md:shadow-[8px_8px_0px_0px_rgba(0,217,255,1)]"
    }
  },
  "interaction": {
    "transition": "transition-all duration-200",
    "active": "active:translate-x-[4px] active:translate-y-[4px]",
    "hoverTranslate": "hover:translate-x-[2px] hover:translate-y-[2px] md:hover:translate-x-1 md:hover:translate-y-1"
  },
  "typography": {
    "heading": "font-black tracking-tight",
    "body": "font-mono",
    "mono": "font-mono",
    "sizes": {
      "hero": "text-4xl md:text-6xl lg:text-8xl",
      "h1": "text-3xl md:text-5xl",
      "h2": "text-2xl md:text-4xl",
      "h3": "text-xl md:text-2xl",
      "body": "text-sm md:text-base",
      "small": "text-xs md:text-sm"
    }
  },
  "spacing": {
    "section": "py-12 md:py-24 lg:py-32",
    "container": "px-4 md:px-8 lg:px-12",
    "card": "p-4 md:p-6",
    "gap": {
      "sm": "gap-2 md:gap-4",
      "md": "gap-4 md:gap-6",
      "lg": "gap-6 md:gap-8"
    }
  },
  "colors": {
    "background": {
      "primary": "bg-white",
      "secondary": "bg-black",
      "accent": [
        "bg-[#ff006e]",
        "bg-[#ccff00]",
        "bg-[#00d9ff]",
        "bg-[#ff9500]"
      ]
    },
    "text": {
      "primary": "text-black",
      "secondary": "text-white",
      "muted": "text-gray-700"
    },
    "button": {
      "primary": "bg-[#ff006e] text-white",
      "secondary": "bg-black text-white",
      "danger": "bg-red-500 text-white"
    }
  },
  "forbidden": {
    "classes": [
      "rounded-sm",
      "rounded",
      "rounded-md",
      "rounded-lg",
      "rounded-xl",
      "rounded-2xl",
      "rounded-3xl",
      "shadow-sm",
      "shadow",
      "shadow-md",
      "shadow-lg",
      "shadow-xl",
      "shadow-2xl",
      "border-gray-100",
      "border-gray-200",
      "border-gray-300",
      "border-gray-400",
      "border-gray-500",
      "border-slate-100",
      "border-slate-200",
      "border-slate-300",
      "border-slate-400",
      "border-slate-500",
      "opacity-50",
      "opacity-75"
    ],
    "patterns": [
      "^rounded-(?!none)",
      "^shadow-(?!\\[|none)",
      "^bg-gradient-",
      "^border-gray-",
      "^border-slate-"
    ],
    "reasons": {
      "rounded-lg": "Neo-Brutalist uses sharp corners only (rounded-none)",
      "shadow-lg": "Neo-Brutalist uses hard-edge shadows only (shadow-[Xpx_Xpx_0px_0px_...])",
      "bg-gradient-to-r": "Neo-Brutalist uses solid colors, no gradients",
      "border-gray-300": "Neo-Brutalist uses pure black borders (border-black)"
    }
  },
  "required": {
    "button": [
      "rounded-none",
      "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)]",
      "hover:shadow-none",
      "hover:translate-x-[2px] hover:translate-y-[2px]",
      "transition-all duration-200",
      "font-black"
    ],
    "card": [
      "rounded-none",
      "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)]",
      "bg-white"
    ],
    "input": [
      "rounded-none",
      "border-2 md:border-4",
      "border-black",
      "font-mono",
      "focus:shadow-[4px_4px_0px_0px_rgba(0,0,0,1)]",
      "focus:outline-none"
    ]
  }
}

示例提示词

SaaS 产品着陆页

包含 Hero、特性卡片、定价表、CTA

用 Neo-Brutalist 风格生成一个 SaaS 产品着陆页,要求:
1. Hero 区域:大标题使用 font-black,鲜艳背景色(如 #ccff00),黑色粗边框按钮
2. 特性区域:3 个卡片,每个有硬边缘阴影,hover 时阴影变为粉色
3. 定价表:3 列,中间推荐列用强调色背景
4. CTA:全宽黑色背景,白色大标题,粉色按钮
所有元素必须:无圆角、黑色粗边框、硬边缘阴影、hover 位移效果

博客文章页

包含标题、作者信息、正文、相关文章

用 Neo-Brutalist 风格创建一个博客文章页面,要求:
1. 顶部:超大标题 font-black,作者信息带头像
2. 正文:使用 font-mono,段落间距适中
3. 侧边栏:相关文章卡片,有硬边缘阴影
4. 分享按钮:图标按钮带黑色边框,hover 位移
所有元素遵循 Neo-Brutalist 规范:无圆角、纯黑边框、高对比配色

作品集展示

网格布局展示项目作品

用 Neo-Brutalist 风格设计一个作品集页面,要求:
1. 导航栏:左侧 Logo 用 font-black,右侧链接 font-mono
2. Hero:个人介绍,使用鲜艳背景色块
3. 作品网格:2-3 列布局,每个卡片有缩略图和标题
4. 卡片效果:黑色粗边框,hover 时阴影变色 + 轻微上移
5. 联系区:简洁表单,输入框 focus 时出现硬阴影