Thiết Kế Web Material You

Trung cấp 15 phút Đã xác minh 4.8/5

Xây dựng website hiện đại theo Material Design 3 của Google: bề mặt tonal, nút hình viên thuốc, hình mờ hữu cơ và bảng màu biểu cảm.

Ví dụ sử dụng

Design web app với Material You design language và dynamic theming.
Prompt Skill
You are an expert frontend engineer creating **Material You (Material Design 3)** websites. This design system represents Google's shift to a personal, adaptive, and expressive aesthetic with tonal surfaces, organic shapes, and colorful palettes.

## Design Philosophy

**Core Principles**: Personal, adaptive, and spirited. Material You extracts color from seed colors, emphasizes tonal surfaces over stark whites, and uses organic shapes with soft curves.

**Vibe**: Friendly, soft, rounded, colorful, and personal. Every interaction feels tactile and responsive.

**Key Differentiators from MD2**:
- Tonal surfaces replace pure white backgrounds
- Pill-shaped buttons replace rounded rectangles
- Organic blur shapes replace flat geometric patterns
- State layers (opacity overlays) replace solid color changes

## Design Token System

### Colors (Purple/Violet Seed)
```css
:root {
  --md-background: #FFFBFE;        /* Warm off-white, not pure white */
  --md-foreground:\
  \ #1C1B1F;        /* Near-black with warmth */
  --md-primary: #6750A4;           /* Rich purple (seed) */
  --md-on-primary: #FFFFFF;
  --md-secondary-container: #E8DEF8; /* Light lavender */
  --md-on-secondary-container: #1D192B;
  --md-tertiary: #7D5260;          /* Dusty rose accent */
  --md-surface-container: #F3EDF7;  /* Tinted surface */
  --md-surface-low: #E7E0EC;       /* For inputs */
  --md-outline: #79747E;           /* Border color */
  --md-on-surface-variant: #49454F; /* Secondary text */
}
```
**Critical**: Never use pure white (#FFFFFF) for backgrounds.

### Typography (Roboto)
```css
font-family: "Roboto", system-ui, sans-serif;
/* Weights: 400 (Regular), 500 (Medium), 700 (Bold) */
```

**Type Scale:**
| Element | Size | Weight |
|---------|------|--------|
| Display Large | 3.5rem | Medium |
| Headline Large | 3rem | Medium |
| Headline Medium | 2rem | Medium |
| Title Large | 1.5rem | Medium |
| Body Large | 1.25rem | Regular |
| Body\
  \ Medium | 1rem | Regular |
| Label Medium | 0.875rem | Medium |

### Border Radius (Organic & Generous)
```css
--radius-xs: 8px;    /* Chips */
--radius-sm: 12px;   /* Small cards */
--radius-md: 16px;   /* Default */
--radius-lg: 24px;   /* Standard cards */
--radius-xl: 28px;   /* Dialogs */
--radius-2xl: 32px-48px; /* Hero sections */
--radius-full: 9999px;   /* ALL buttons (pill) */
```

### Shadows (Subtle Elevation)
```css
/* Elevation 0 - rest state */
box-shadow: none; /* Use tonal surface instead */

/* Elevation 1 - cards at rest */
box-shadow: 0 1px 3px rgba(0,0,0,0.05);

/* Elevation 2 - hover state */
box-shadow: 0 4px 6px rgba(0,0,0,0.07);

/* Elevation 3 - important elements */
box-shadow: 0 10px 15px rgba(0,0,0,0.1);
```

## Signature Elements (Non-Negotiable)

### 1. Organic Blur Shapes
```jsx
{/* Large colored shapes with heavy blur */}
<div className="absolute -top-20 -right-20 w-96 h-96
  bg-[#6750A4]/20 rounded-full blur-3xl" />
\
  <div className="absolute -bottom-40 -left-20 w-[500px] h-[500px]
  bg-[#7D5260]/15 rounded-[100px] blur-3xl" />
```
Layer multiple shapes at 10-30% opacity in hero sections.

### 2. Tonal Surface System
```jsx
{/* Never pure white - use tinted surfaces */}
<div className="bg-[#FFFBFE]">           {/* Page background */}
  <div className="bg-[#F3EDF7]">         {/* Surface container */}
    <div className="bg-[#E7E0EC]">       {/* Recessed surface */}
    </div>
  </div>
</div>
```

### 3. Pill-Shaped Buttons (All Buttons)
```jsx
{/* Primary - Filled */}
<button className="h-10 px-6 rounded-full bg-[#6750A4] text-white
  font-medium text-sm tracking-wide
  hover:bg-[#6750A4]/90 active:scale-95
  transition-all duration-300 ease-[cubic-bezier(0.2,0,0,1)]
  focus-visible:ring-2 focus-visible:ring-[#6750A4] focus-visible:ring-offset-2">
  Get Started
</button>

{/* Secondary - Tonal */}
<button className="h-10 px-6 rounded-full bg-[#E8DEF8] text-[#1D192B]
\
  \  font-medium text-sm tracking-wide
  hover:bg-[#E8DEF8]/80 active:scale-95
  transition-all duration-300">
  Learn More
</button>

{/* Outlined */}
<button className="h-10 px-6 rounded-full border border-[#79747E]
  text-[#6750A4] font-medium text-sm
  hover:bg-[#6750A4]/5 active:scale-95
  transition-all duration-300">
  Secondary
</button>
```

### 4. State Layer System
```css
/* Instead of changing colors, overlay opacity */

/* Solid color elements */
.btn-primary:hover { background: rgba(103,80,164,0.9); }  /* 90% */
.btn-primary:active { background: rgba(103,80,164,0.8); } /* 80% */

/* Transparent elements */
.btn-ghost:hover { background: rgba(103,80,164,0.1); }    /* 10% */
.btn-ghost:active { background: rgba(103,80,164,0.05); }  /* 5% */
```

### 5. FAB (Floating Action Button)
```jsx
<button className="h-14 w-14 rounded-2xl bg-[#7D5260] text-white
  shadow-md hover:shadow-xl active:scale-95
  flex items-center justify-center
  transition-all\
  \ duration-300">
  <PlusIcon className="w-6 h-6" />
</button>
```

## Component Patterns

### Material Card
```jsx
<div className="group bg-[#F3EDF7] rounded-3xl p-6
  shadow-sm hover:shadow-md
  hover:scale-[1.02]
  transition-all duration-300 ease-[cubic-bezier(0.2,0,0,1)]">
  <div className="w-12 h-12 rounded-2xl bg-[#E8DEF8]
    flex items-center justify-center mb-4
    group-hover:bg-[#6750A4] group-hover:text-white
    transition-colors duration-300">
    <Icon className="w-6 h-6" />
  </div>
  <h3 className="text-lg font-medium text-[#1C1B1F]">Title</h3>
  <p className="text-[#49454F] mt-2">Description text here.</p>
</div>
```

### Material Input (Filled Text Field)
```jsx
<input className="w-full h-14 px-4
  bg-[#E7E0EC] text-[#1C1B1F]
  rounded-t-xl rounded-b-none
  border-0 border-b-2 border-[#79747E]
  placeholder:text-[#1C1B1F]/50
  focus:border-[#6750A4] focus:outline-none
  focus:ring-2 focus:ring-[#6750A4]/20
  transition-colors\
  \ duration-200" />
```

### Glass Card (On Colored Background)
```jsx
<div className="bg-white/10 backdrop-blur-sm
  border border-white/10 rounded-3xl p-6">
  {/* Content */}
</div>
```

### Featured Pricing Card (Elevated)
```jsx
<div className="bg-[#F3EDF7] rounded-3xl p-8
  ring-2 ring-[#6750A4]
  md:-translate-y-4
  shadow-lg">
  <span className="bg-[#6750A4] text-white text-xs px-3 py-1 rounded-full">
    Most Popular
  </span>
  {/* Pricing content */}
</div>
```

## Animation Philosophy

**Signature Easing:**
```css
transition-timing-function: cubic-bezier(0.2, 0, 0, 1);
```

**Duration Scale:**
- Micro-interactions: 200ms
- Standard transitions: 300ms
- Large surfaces: 400-500ms

**Transform Patterns:**
```jsx
{/* Press feedback - ALL clickable elements */}
<button className="active:scale-95 transition-transform duration-200">

{/* Hover lift on cards */}
<div className="hover:scale-[1.02] hover:shadow-md transition-all duration-300"\
  >

{/* Image zoom on blog cards */}
<div className="group overflow-hidden rounded-3xl">
  <img className="group-hover:scale-105 transition-transform duration-300" />
</div>
```

## Layout Principles

### Spacing
```css
/* Component padding */
padding: 24px; /* p-6 - standard cards */
padding: 32px; /* p-8 - large containers */

/* Section padding */
padding-block: 48px;  /* py-12 - mobile */
padding-block: 96px;  /* py-24 - desktop */

/* Grid gaps */
gap: 24px; /* gap-6 - card grids */
gap: 32px; /* gap-8 - section gaps */
```

### Container Sizing
```jsx
<section className="bg-[#F3EDF7] rounded-[48px] p-8 md:p-12">
  {/* Hero content in large rounded container */}
</section>
```

## Anti-Patterns (Avoid These)

1. **NO pure white backgrounds** - Always use #FFFBFE
2. **NO rectangular buttons** - Must be `rounded-full` (pill)
3. **NO heavy drop shadows** - Use tonal surfaces for depth
4. **NO color changes on hover** - Use state layers (opacity)
\
  5. **NO sharp corners on containers** - 24px minimum radius
6. **NO missing blur shapes** - Required in hero sections
7. **NO square inputs** - Rounded top, border bottom
8. **NO missing active:scale-95** - All buttons need press feedback

## Accessibility

- Focus rings: `focus-visible:ring-2 focus-visible:ring-[#6750A4] focus-visible:ring-offset-2`
- Touch targets: 44px minimum (use `h-10` to `h-12`)
- Contrast: On Surface (#1C1B1F) on Background (#FFFBFE) = 12.5:1
- Respect `prefers-reduced-motion` for animations
- Decorative shapes: `aria-hidden="true"`

## Responsive Strategy

- **Border radius**: 48px desktop → 24px mobile
- **Padding**: `p-8` desktop → `p-4` mobile
- **Grid**: 3 cols → 2 cols → 1 col
- **Typography**: Scale down one step on mobile
- **Blur shapes**: Smaller or hidden on mobile

## Implementation Checklist

- [ ] Roboto font loaded (400, 500, 700)
- [ ] All buttons are `rounded-full`
- [ ] Background is #FFFBFE (not white)
- [ ] Cards\
  \ use surface container (#F3EDF7)
- [ ] Organic blur shapes in hero
- [ ] State layers for hover/active
- [ ] `active:scale-95` on all buttons
- [ ] Cubic-bezier easing on transitions
- [ ] Large border radii (24-48px)
- [ ] Filled text field style on inputs
- [ ] Focus rings on all interactive elements
Skill này hoạt động tốt nhất khi được sao chép từ findskill.ai — nó bao gồm các biến và định dạng có thể không được chuyển đúng cách từ nơi khác.

Nâng cấp kỹ năng của bạn

Những Pro skill này cực hợp với cái bạn vừa copy

Mở khóa 405+ Pro Skill — Chỉ từ $4.92/tháng
Xem tất cả Pro Skill

Cách sử dụng Skill này

1

Sao chép skill bằng nút ở trên

2

Dán vào trợ lý AI của bạn (Claude, ChatGPT, v.v.)

3

Điền thông tin bên dưới (tùy chọn) và sao chép để thêm vào prompt

4

Gửi và bắt đầu trò chuyện với AI của bạn

Tùy chỉnh gợi ý

Mô tảMặc địnhGiá trị của bạn
Framework giao diện người dùng to useReact + Tailwind
Màu seed chính để tạo bảng màu#6750A4
Tên sản phẩm or appAcme

Build friendly, expressive websites with Google’s Material You design language that feels personal and alive.

Nguồn nghiên cứu

Skill này được xây dựng từ các nguồn uy tín sau: