画廊按钮
无圆角墨黑按钮,大写字母配舒展字距,如同展签上的指令
<button className="px-8 py-3 bg-[#1A1A1A] text-[#FCFCFA] rounded-none text-xs font-light uppercase tracking-[0.2em] hover:bg-[#2E2E2C] transition-colors duration-300">View Works</button>#1A1A1A#FCFCFA#A85A3A#8A8A85#E8E6E1#2E2E2CYou are a curator-minded frontend expert specializing in the Horizontal Gallery (white cube) layout. All generated code must strictly follow these constraints:
## Absolute Rules
- The core content area is a horizontal strip: overflow-x-auto snap-x snap-mandatory, items shrink-0 snap-start
- Artwork images: rounded-none, no border, no shadow, object-cover, aspect-[4/5] or aspect-[3/2]
- Every work carries an index (No. 01 / Fig. 01) in terracotta #A85A3A and a caption below the image: text-xs uppercase tracking-[0.2em] text-[#8A8A85]
- Background is gallery white #FCFCFA, text is ink #1A1A1A, all dividers are hairlines border-[#E8E6E1]
- Horizontal whitespace between works is generous: gap-16 md:gap-24, wall margins px-6 md:px-20
- Section titles use font-serif font-light tracking-wide; body text is sans
- Hide horizontal scrollbars (scrollbar-width: none; ::-webkit-scrollbar display: none) and show a hairline progress line or arrows instead
- A sticky title cell (sticky left-0 bg-[#FCFCFA]) may accompany the strip
## Forbidden
- Shadows, rounded corners, or borders on artwork images
- Text overlaid on artwork
- Vertical masonry or multi-row grids inside the strip
- Borders thicker than 1px anywhere
- Gradient, textured, or saturated multicolor backgrounds on the wall
- Any accent color other than restrained terracotta #A85A3A
## Layout Structure
Strip container:
- flex gap-16 md:gap-24 overflow-x-auto snap-x snap-mandatory
- hidden scrollbar, hairline progress underneath
Work cell:
- figure with w-72 to w-[28rem], shrink-0, snap-start
- image block aspect-[4/5] or aspect-[3/2] overflow-hidden
- figcaption: mt-5 pt-4 border border-[#E8E6E1], index then serif title then caption
## Responsive
- Mobile (< 768px): narrower cells (w-64), wall margins px-6, keep the strip horizontal
- Tablet (768px+): w-80 cells, px-12 margins
- Desktop (1024px+): mixed w-80 / w-[28rem] cells, px-20 margins, sticky title cell enabled
- Respect prefers-reduced-motion: disable smooth scrolling and scale transitions
## Self-Check
After generating code, verify:
1. The strip snaps horizontally and the scrollbar is hidden
2. No artwork image has a shadow, radius, or border
3. Every work shows an index and a hairline caption below the image
4. All lines on the page are 1px hairlines in #E8E6E1
5. The only accent color present is #A85A3Arounded-none font-light uppercase tracking-[0.2em] transition-colors duration-300 bg-[#1A1A1A] text-[#FCFCFA] hover:opacity-80 focus:outline-none focus-visible:ring-1 focus-visible:ring-[#1A1A1A] focus-visible:ring-offset-2 active:opacity-60无圆角墨黑按钮,大写字母配舒展字距,如同展签上的指令
<button className="px-8 py-3 bg-[#1A1A1A] text-[#FCFCFA] rounded-none text-xs font-light uppercase tracking-[0.2em] hover:bg-[#2E2E2C] transition-colors duration-300">View Works</button>横滚条带内的作品单元:无边框大图、编号、hairline 分割与极细图注
<figure className="w-72 shrink-0 snap-start">
<div className="aspect-[4/5] overflow-hidden bg-[#E8E6E1]">
<img
src="/artwork-01.jpg"
alt="Untitled Study"
className="w-full h-full object-cover rounded-none"
/>
</div>
<figcaption className="mt-5 pt-4 border border-[#E8E6E1]">
<p className="text-[10px] uppercase tracking-[0.25em] text-[#A85A3A] mb-2">No. 01</p>
<p className="font-serif font-light text-base text-[#1A1A1A]">Untitled Study</p>
<p className="text-xs uppercase tracking-[0.2em] text-[#8A8A85] mt-1.5">Archival Pigment Print, 2026</p>
</figcaption>
</figure>访客登记式的下划线输入框,透明底、hairline 底边、大写占位符
<input
type="text"
placeholder="YOUR NAME"
className="w-full px-0 py-3 bg-transparent border-0 border border-[#E8E6E1] rounded-none text-sm text-[#1A1A1A] placeholder:text-xs placeholder:uppercase placeholder:tracking-[0.2em] placeholder:text-[#8A8A85] focus:outline-none focus:border-[#1A1A1A] transition-colors duration-300"
/>hairline 底边导航,serif 馆名与大写细字距链接
<nav className="flex items-center justify-between px-6 md:px-20 py-6 bg-[#FCFCFA] border border-[#E8E6E1]">
<span className="font-serif font-light text-xl tracking-wide text-[#1A1A1A]">White Room</span>
<div className="flex items-center gap-10 text-[11px] uppercase tracking-[0.2em] text-[#8A8A85]">
<span className="text-[#1A1A1A] cursor-pointer">Works</span>
<span className="hover:text-[#1A1A1A] transition-colors cursor-pointer">Exhibitions</span>
<span className="hover:text-[#1A1A1A] transition-colors cursor-pointer">Visit</span>
</div>
</nav>风格核心:sticky 标题格伴随的 snap 横滚作品条带
<section className="py-24 bg-[#FCFCFA]">
<div className="flex gap-16 overflow-x-auto snap-x snap-mandatory pb-8 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden">
<div className="sticky left-0 z-10 shrink-0 w-64 pl-6 md:pl-20 bg-[#FCFCFA] flex flex-col justify-between">
<div>
<p className="text-[10px] uppercase tracking-[0.25em] text-[#A85A3A] mb-4">Current Exhibition</p>
<h2 className="font-serif font-light text-4xl leading-tight text-[#1A1A1A]">The Weight of Quiet Things</h2>
</div>
<p className="text-xs uppercase tracking-[0.2em] text-[#8A8A85]">01 / 08</p>
</div>
<figure className="w-80 shrink-0 snap-start">
<div className="aspect-[4/5] bg-[#E8E6E1]" />
<figcaption className="mt-5 pt-4 border border-[#E8E6E1]">
<p className="text-[10px] uppercase tracking-[0.25em] text-[#A85A3A] mb-2">No. 01</p>
<p className="font-serif font-light text-[#1A1A1A]">Still Field</p>
<p className="text-xs uppercase tracking-[0.2em] text-[#8A8A85] mt-1.5">Oil on Linen, 2025</p>
</figcaption>
</figure>
<figure className="w-[28rem] shrink-0 snap-start pr-6 md:pr-20">
<div className="aspect-[3/2] bg-[#E8E6E1]" />
<figcaption className="mt-5 pt-4 border border-[#E8E6E1]">
<p className="text-[10px] uppercase tracking-[0.25em] text-[#A85A3A] mb-2">No. 02</p>
<p className="font-serif font-light text-[#1A1A1A]">Northern Wall</p>
<p className="text-xs uppercase tracking-[0.2em] text-[#8A8A85] mt-1.5">Gelatin Silver Print, 2026</p>
</figcaption>
</figure>
</div>
</section>hairline 顶边页脚,开放时间与地址如同展签排布
<footer className="bg-[#FCFCFA] border border-[#E8E6E1] px-6 md:px-20 py-16">
<div className="grid grid-cols-1 md:grid-cols-3 gap-12">
<div>
<p className="font-serif font-light text-lg text-[#1A1A1A] mb-4">White Room</p>
<p className="text-xs uppercase tracking-[0.2em] text-[#8A8A85] leading-loose">14 Quiet Street<br />Copenhagen K</p>
</div>
<div>
<p className="text-[10px] uppercase tracking-[0.25em] text-[#A85A3A] mb-4">Hours</p>
<p className="text-xs uppercase tracking-[0.2em] text-[#8A8A85] leading-loose">Tue - Sat, 11:00 - 18:00<br />Sunday by appointment</p>
</div>
<div>
<p className="text-[10px] uppercase tracking-[0.25em] text-[#A85A3A] mb-4">Contact</p>
<p className="text-xs uppercase tracking-[0.2em] text-[#8A8A85] leading-loose">mail@whiteroom.gallery<br />+45 33 12 00 00</p>
</div>
</div>
</footer>Horizontal Gallery(横滚画廊)把网页想象成一座白盒美术馆(White Cube):观看不是向下刷信息流,而是沿着一条展线向前步行,每一步停在一件作品正前方。
核心理念:
- 留白即展墙:#FCFCFA 的画廊白不是空缺,而是作品之间的呼吸与静默,间距本身就是策展决定
- 横向即展线:overflow-x-auto 加 scroll-snap 让滚动变成步行,每件作品都被 snap 停驻在观看者面前
- 作品即主角:无边框、无阴影、无圆角,任何容器装饰都不得与作品争夺注意力
- 图注即策展:No. 01 的编号与极细大写图注,用博物馆墙签(wall label)的语气交代作者、媒介与年代
设计原则:
- 视觉一致性:所有组件必须遵循统一的视觉语言,从色彩到字体到间距保持谐调
- 层次分明:通过颜色深浅、字号大小、留白空间建立清晰的信息层级
- 交互反馈:每个可交互元素都必须有明确的 hover、active、focus 状态反馈
- 响应式适配:设计必须在移动端、平板、桌面端上保持一致的体验
- 无障碍性:确保色彩对比度符合 WCAG 2.1 AA 标准,所有交互元素可键盘访问
/* Horizontal Gallery Global Styles */
/* Signature horizontal strip: snap scroll with hidden scrollbar */
.hgallery-strip {
display: flex;
overflow-x: auto;
scroll-snap-type: x mandatory;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
-ms-overflow-style: none;
}
.hgallery-strip::-webkit-scrollbar {
display: none;
}
.hgallery-item {
flex-shrink: 0;
scroll-snap-align: start;
}
.hgallery-item--center {
scroll-snap-align: center;
}
/* Sticky title cell that walks along with the strip */
.hgallery-sticky-title {
position: sticky;
left: 0;
z-index: 10;
background: #FCFCFA;
}
/* Museum wall label caption */
.hgallery-caption {
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.2em;
color: #8A8A85;
}
.hgallery-index {
font-size: 0.625rem;
text-transform: uppercase;
letter-spacing: 0.25em;
color: #A85A3A;
}
/* Hairline rules */
.hgallery-hairline {
border-color: #E8E6E1;
border-width: 1px;
}
/* Hairline scroll progress track */
.hgallery-progress {
position: relative;
height: 1px;
background: #E8E6E1;
}
.hgallery-progress-thumb {
position: absolute;
top: 0;
left: 0;
height: 1px;
background: #1A1A1A;
transition: width 0.2s ease-out;
}
/* Horizontal Gallery Design Tokens */
:root {
--horizontal-gallery-wall: #FCFCFA;
--horizontal-gallery-ink: #1A1A1A;
--horizontal-gallery-ink-soft: #2E2E2C;
--horizontal-gallery-muted: #8A8A85;
--horizontal-gallery-hairline: #E8E6E1;
--horizontal-gallery-terracotta: #A85A3A;
}
@keyframes horizontal-gallery-fade-in {
from { opacity: 0; transform: translateX(16px); }
to { opacity: 1; transform: translateX(0); }
}
.horizontal-gallery-animate-in {
animation: horizontal-gallery-fade-in 0.6s ease-out both;
}#1A1A1A#FCFCFA#A85A3A#8A8A85#E8E6E1#2E2E2C{
"border": {
"width": "border",
"color": "border-[#E8E6E1]",
"radius": "rounded-none",
"style": "border-solid"
},
"shadow": {
"sm": "shadow-none",
"md": "shadow-none",
"lg": "shadow-none",
"none": "shadow-none",
"hover": "shadow-none",
"focus": "ring-1 ring-[#1A1A1A]",
"colored": {}
},
"interaction": {
"transition": "transition-colors duration-300",
"active": "active:opacity-60",
"hoverScale": "hover:opacity-80"
},
"typography": {
"heading": "font-serif font-light tracking-wide",
"body": "font-sans font-light",
"mono": "font-mono",
"sizes": {
"hero": "text-5xl md:text-6xl lg:text-7xl",
"h1": "text-4xl md:text-5xl",
"h2": "text-3xl md:text-4xl",
"h3": "text-xl md:text-2xl",
"body": "text-sm md:text-base",
"small": "text-xs"
}
},
"spacing": {
"section": "py-20 md:py-28 lg:py-36",
"container": "px-6 md:px-12 lg:px-20",
"card": "p-0",
"gap": {
"sm": "gap-8",
"md": "gap-12 md:gap-16",
"lg": "gap-16 md:gap-24"
}
},
"colors": {
"background": {
"primary": "bg-[#FCFCFA]",
"secondary": "bg-[#E8E6E1]",
"accent": [
"bg-[#A85A3A]",
"bg-[#1A1A1A]"
]
},
"text": {
"primary": "text-[#1A1A1A]",
"secondary": "text-[#2E2E2C]",
"muted": "text-[#8A8A85]"
},
"button": {
"primary": "bg-[#1A1A1A] text-[#FCFCFA] hover:bg-[#2E2E2C]",
"secondary": "bg-transparent text-[#1A1A1A] border border-[#1A1A1A]",
"danger": "bg-[#A85A3A] text-[#FCFCFA] hover:bg-[#8F4A2E]"
}
},
"forbidden": {
"classes": [
"rounded-lg",
"rounded-xl",
"rounded-2xl",
"rounded-full",
"shadow-sm",
"shadow-md",
"shadow-lg",
"shadow-xl",
"shadow-2xl",
"border-2",
"border-4",
"bg-gradient-to-r",
"bg-gradient-to-br"
],
"patterns": [
"^rounded-(sm|md|lg|xl|2xl|3xl|full)$",
"^shadow-(sm|md|lg|xl|2xl)$",
"^border-[248]$",
"^bg-gradient-"
],
"reasons": {
"rounded-lg": "Horizontal Gallery hangs works flush on the wall; every corner stays rounded-none",
"shadow-md": "Artwork and cards must cast no shadow on the gallery wall",
"border-2": "All lines are 1px hairlines in #E8E6E1; heavy frames are forbidden",
"bg-gradient-to-r": "The wall stays gallery white #FCFCFA; no gradient or textured backgrounds"
}
},
"required": {
"button": [
"rounded-none",
"uppercase",
"tracking-[0.2em]",
"transition-colors duration-300"
],
"card": [
"rounded-none",
"shadow-none"
],
"input": [
"rounded-none",
"bg-transparent",
"border border-[#E8E6E1]",
"focus:border-[#1A1A1A]"
]
}
}白盒画廊式的横滚摄影作品集
Create a photographer portfolio in Horizontal Gallery style:
1. Gallery white #FCFCFA wall, ink #1A1A1A text, hairline dividers border-[#E8E6E1]
2. Hero with a font-serif font-light exhibition title and dates in uppercase tracked caption text
3. Core: a horizontal strip (flex gap-16 md:gap-24 overflow-x-auto snap-x snap-mandatory) of 8 photos
4. Each photo: shrink-0 snap-start, aspect-[4/5] or aspect-[3/2], rounded-none, no shadow, no border
5. Below each photo: No. 0X index in #A85A3A, serif title, then medium/year caption in text-xs uppercase tracking-[0.2em] text-[#8A8A85]
6. Sticky title cell (sticky left-0 bg-[#FCFCFA]) as the first strip item with a 01 / 08 counter
7. Hidden scrollbar plus a 1px progress line and prev/next arrows
8. Footer with gallery hours as wall-label typography当期展览详情页,含策展陈述与作品目录
Build a museum exhibition page in Horizontal Gallery style:
1. Hairline nav with serif gallery wordmark and uppercase tracked links
2. Exhibition hero: large font-serif font-light title, dates, and an On View badge with hairline border
3. Horizontal snap strip of artworks with No. 0X indices and museum wall-label captions below each image
4. Curatorial statement section: two columns, serif pull quote plus sans body in #8A8A85
5. Catalogue table with hairline row dividers: No., Title, Medium, Year, Status
6. RSVP form with underline inputs (bg-transparent border border-[#E8E6E1] rounded-none)
7. Only accent color: terracotta #A85A3A for indices and small highlights
No shadows, no rounded corners, no text over images anywhere把产品当作展品的横滚 lookbook
Create a fashion lookbook in Horizontal Gallery style:
1. Treat each product photo as an exhibit: borderless, shadowless, rounded-none, aspect-[4/5]
2. Horizontal snap-mandatory strip with vast gap-16 md:gap-24 whitespace between looks
3. Under each look: Fig. 0X index in #A85A3A, serif product name, price in text-xs uppercase tracking-[0.2em] text-[#8A8A85]
4. Sticky season title (sticky left-0) accompanying the scroll
5. Hairline-only UI: 1px #E8E6E1 dividers, underline inputs, rounded-none uppercase tracked buttons
6. Gallery white #FCFCFA background throughout, no gradients or color blocks
7. Hidden scrollbars with a thin progress line and a 03 / 12 counter