← 返回
内容创作

Web Design

CSS implementation patterns for layout, typography, color, spacing, and responsive design. Complements ui-design (fundamentals) with code-focused examples.
涵盖布局、排版、色彩、间距及响应式设计的 CSS 实现模式,通过代码实例补充 UI 设计基础。
wpank
内容创作 clawhub v1.0.0 1 版本 99320.3 Key: 无需
★ 4
Stars
📥 4,596
下载
💾 588
安装
1
版本
#latest

概述

Web Design Patterns

CSS implementation patterns for production-grade interfaces. For design fundamentals and decision-making, see ui-design. This skill focuses on code.

> See also: ui-design for typography/color/spacing theory, frontend-design for creative aesthetics.

Installation

OpenClaw / Moltbot / Clawbot

npx clawhub@latest install web-design

Layout Principles

Use CSS Grid for two-dimensional layouts and Flexbox for one-dimensional flow. Choose the right tool for each context.

Layout NeedToolWhy
---------
Page-level structureCSS Grid (grid-template-areas)Named regions, explicit row/column control
Navigation barsFlexboxSingle-axis alignment, spacing with gap
Card gridsGrid (auto-fill / auto-fit)Responsive without media queries
CenteringGrid (place-items: center)Shortest, most reliable centering
Sidebar + contentGrid (grid-template-columns: 250px 1fr)Proportional sizing with fixed sidebar
Stacking overlapsGrid + grid-area: 1/1Layer elements without position: absolute

Spatial Composition

Go beyond predictable layouts. Intentional asymmetry, overlapping elements, and grid-breaking accents create visual interest. Use grid stacking (grid-area: 1/1) instead of position: absolute for overlapping elements. Choose generous negative space for luxury/editorial aesthetics, or controlled density for data-rich interfaces — the choice must be intentional.

Typography

Typography carries 90% of a design's personality. Choose fonts that match the interface's purpose.

ContextDisplay Font DirectionBody Font DirectionExample Pairing
------------
Editorial / magazineHigh-contrast serifNeutral humanist sansPlayfair Display + Source Sans 3
SaaS dashboardGeometric sansMatching weight sansDM Sans + DM Mono (data)
Creative portfolioExpressive displayClean readable sansSyne + Outfit
E-commerce luxuryThin modern serifElegant sansCormorant Garamond + Jost
Developer toolingMonospace displayMonospace bodyJetBrains Mono + IBM Plex Mono

Type Scale

Use a consistent ratio. A 1.25 (major third) scale works for most interfaces: text-xs 0.64rem, text-sm 0.8rem, text-base 1rem, text-lg 1.25rem, text-xl 1.563rem, text-2xl 1.953rem, text-3xl 2.441rem, text-4xl 3.052rem. Set body text to 1rem (16px minimum), line-height 1.5 for body, 1.1–1.2 for headings. Limit line length to 60–75ch.

Color

Building a Palette

Every palette needs five functional roles:

RolePurposeExample Usage
---------
PrimaryBrand identity, primary actionsButtons, links, active states
NeutralText, borders, backgroundsBody text, cards, dividers
AccentSecondary actions, highlightsTags, badges, secondary buttons
Success / Warning / ErrorSemantic feedbackToasts, form validation, status
SurfaceLayered backgroundsCards on page, modals on overlay

Contrast and Depth

Create depth through surface layering, not just shadows:

:root {
  --surface-0: hsl(220 15% 8%);    /* page background */
  --surface-1: hsl(220 15% 12%);   /* card */
  --surface-2: hsl(220 15% 16%);   /* raised element */
  --surface-3: hsl(220 15% 20%);   /* popover / modal */
}

Use HSL or OKLCH for perceptually uniform color manipulation. Dominant color with sharp accents outperforms evenly-distributed palettes. Always verify WCAG contrast: 4.5:1 for normal text, 3:1 for large text.

Spacing

Consistent spacing creates rhythm. Use an 8px base unit (or 4px for dense UIs):

TokenValueUse
---------
--space-10.25rem (4px)Inline icon gaps, tight padding
--space-20.5rem (8px)Input padding, compact lists
--space-30.75rem (12px)Button padding, card inner spacing
--space-41rem (16px)Default element spacing
--space-61.5rem (24px)Section padding, card gaps
--space-82rem (32px)Section separation
--space-123rem (48px)Major section breaks
--space-164rem (64px)Page-level vertical rhythm

Apply spacing consistently: use gap on Grid/Flexbox containers instead of margins on children. This eliminates margin-collapse bugs and simplifies responsive adjustments.

Visual Hierarchy

Guide the eye through deliberate contrast in size, weight, color, and space.

Hierarchy Techniques

TechniqueHowImpact
---------
Size contrastHero heading 3–4x body sizeImmediate focal point
Weight contrastBold headings + regular bodyScannability
Color contrastPrimary text vs muted secondaryInformation layering
Spatial groupingTight spacing within groups, wide betweenGestalt proximity
ElevationShadows / surface layersInteractive affordance
Whitespace isolationEmpty space around key elementEmphasis through absence

Practical Pattern — Card Hierarchy

Layer hierarchy within cards: eyebrow (xs, uppercase, muted) → title (xl, semibold) → body (base, secondary color, 1.6 line-height) → action (spaced apart with margin-top). Use surface color for separation and consistent padding from spacing tokens.

Responsive Design

Breakpoint Strategy

BreakpointTargetApproach
---------
< 640pxMobileSingle column, stacked navigation, touch targets ≥ 44px
640–1024pxTabletTwo-column options, collapsible sidebars
1024–1440pxDesktopFull layout, hover interactions enabled
> 1440pxWideMax-width container (1280px), prevent ultra-wide line lengths

Fluid Techniques

Prefer fluid sizing over rigid breakpoints where possible:

/* Fluid typography — scales between 640px and 1440px viewport */
h1 { font-size: clamp(2rem, 1.5rem + 2.5vw, 3.5rem); }

/* Fluid spacing */
section { padding-block: clamp(2rem, 1rem + 4vw, 6rem); }

/* Intrinsic grid — no media queries needed */
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: var(--space-6); }

Use container queries (@container) for component-level responsiveness when a component's layout should respond to its container, not the viewport.

Accessibility

Accessibility is not optional. Build it in from the start.

RequirementImplementationStandard
---------
Color contrast4.5:1 normal text, 3:1 large text / UIWCAG 2.1 AA
Keyboard navigationAll interactive elements focusable and operableWCAG 2.1.1
Focus indicatorsVisible :focus-visible ring, 2px+ offsetWCAG 2.4.7
Semantic HTMLUse WCAG 1.3.1
Alt textDescriptive for informational images, alt="" for decorativeWCAG 1.1.1
Motion safetyRespect prefers-reduced-motionWCAG 2.3.3
Touch targetsMinimum 44×44px interactive areasWCAG 2.5.8
ARIA when neededaria-label, aria-live, role only when native semantics insufficientWCAG 4.1.2
/* Robust focus indicator */
:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

/* Respect motion preferences */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

Component Design

Anatomy of a Well-Designed Component

Every UI component should have clear states, consistent spacing, and predictable behavior:

StateVisual TreatmentExample
---------
DefaultBase stylingButton at rest
HoverSubtle shift — background, shadow, or scalebackground lightens 5-10%
Active / PressedCompressed feel — reduced shadow, slight insettransform: scale(0.98)
FocusHigh-visibility ring, no outline removal:focus-visible ring
DisabledReduced opacity, cursor: not-allowedopacity: 0.5
LoadingSpinner or skeleton, disabled interactionInline spinner replacing label

Design Token Architecture

Structure tokens in three layers for maintainability:

/* Layer 1: Primitive values */
--blue-500: oklch(0.55 0.2 250);
--gray-100: oklch(0.95 0.005 250);
--radius-md: 0.5rem;

/* Layer 2: Semantic aliases */
--color-primary: var(--blue-500);
--color-surface: var(--gray-100);
--radius-button: var(--radius-md);

/* Layer 3: Component-specific */
--btn-bg: var(--color-primary);
--btn-radius: var(--radius-button);
--btn-padding: var(--space-2) var(--space-4);

This three-layer approach allows theme switching by remapping Layer 2 without touching components.

Interaction Patterns

Motion and Animation

Use motion to communicate state changes, not to decorate. Focus on high-impact moments:

InteractionDurationEasingPurpose
------------
Button hover150msease-outAcknowledge interaction
Modal open250msease-outDraw attention
Modal close200msease-inQuick dismissal
Page transition300msease-in-outMaintain spatial context
Stagger reveal50–80ms delay per itemease-outSequential content loading
Micro-feedback100msease-outToggle, checkbox, switch
/* Staggered entrance animation */
.stagger-item {
  opacity: 0;
  translate: 0 1rem;
  animation: reveal 0.5s ease-out forwards;
}
.stagger-item:nth-child(1) { animation-delay: 0ms; }
.stagger-item:nth-child(2) { animation-delay: 60ms; }
.stagger-item:nth-child(3) { animation-delay: 120ms; }

@keyframes reveal {
  to { opacity: 1; translate: 0 0; }
}

Scroll-Driven Effects

Use native animation-timeline: scroll() (behind @supports) for parallax and reveal effects without JavaScript. Wrap in feature detection to gracefully degrade.

Design Quality Checklist

Before shipping, verify against these criteria:

  • [ ] Typography: Intentional font pairing, consistent scale, readable line lengths
  • [ ] Color: Cohesive palette, WCAG contrast met, semantic feedback colors defined
  • [ ] Spacing: Consistent rhythm using spacing tokens, no ad-hoc pixel values
  • [ ] Hierarchy: Clear visual flow — eye path follows intended reading order
  • [ ] Responsiveness: Tested at mobile, tablet, desktop; no horizontal overflow
  • [ ] Accessibility: Keyboard navigable, focus visible, screen-reader tested, motion-safe
  • [ ] States: All interactive elements have hover, active, focus, disabled, and loading states
  • [ ] Personality: Design has a clear point-of-view — not generic template aesthetic
  • [ ] Performance: Images optimized, fonts subset, animations GPU-accelerated (transform, opacity)
  • [ ] Dark mode: If supported, surfaces use layered lightness, not inverted colors

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-28 14:02 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

content-creation

AdMapix

fly0pants
广告情报与应用数据分析助手,支持搜索广告素材、分析应用排名、下载量、收入及市场洞察,用于广告素材和竞品分析。
★ 294 📥 136,400
content-creation

Baidu Wenku AIPPT

ide-rea
使用百度文库 AI 智能生成 PPT,自动根据内容选择模板。
★ 66 📥 46,129
developer-tools

Code Review

wpank
涵盖安全、性能、可维护性、正确性和测试的系统化代码审查模式,包含严重等级、结构化反馈指南、审查流程及需避免的反模式。适用于审查 PR、建立审查标准或提升审查质量。
★ 31 📥 17,068