React

Responsive Design

Viewport 크기에 따라 레이아웃과 스타일을 조정하는 방법을 알아봅니다.

SEED는 mobile-first 반응형 시스템을 제공합니다. 특정 breakpoint에 값을 지정하면 더 넓은 viewport에도 동일한 값이 적용됩니다.

Breakpoints

이름min-width
base0px
sm480px
md768px
lg1280px
xl1440px

레이아웃 컴포넌트에서 반응형 Prop 사용하기

Box 및 Box 기반 컴포넌트(Flex, Grid, VStack, HStack 등)에서 레이아웃 프로퍼티의 값으로 breakpoint 이름을 키로 사용하는 객체를 받을 수 있습니다.

<Box padding={{ base: "x3", md: "x4" }} />
분류프로퍼티
Layoutdisplay, flexDirection, gap
Sizingwidth, minWidth, maxWidth, height, minHeight, maxHeight
Paddingpadding, paddingX, paddingY, paddingTop, paddingRight, paddingBottom, paddingLeft, p, px, py, pt, pr, pb, pl
BleedbleedX, bleedY, bleedTop, bleedRight, bleedBottom, bleedLeft

Hiding & Showing Elements

display에 반응형 값을 전달하여 특정 breakpoint에서 요소를 표시하거나 숨길 수 있습니다.

hideFrom

hideFrom을 사용하여 특정 breakpoint 이상에서 요소를 숨깁니다. (display: none;)

Box 및 Box 기반 컴포넌트(Flex, Grid, VStack, HStack 등)에서 사용할 수 있습니다.

hideFrom="md"display={{ md: "none" }}과 동일합니다.

Grid

Breakpoint 별로 columnsrows 속성을 지정할 수 있습니다.

Grid

Grid 컴포넌트는 CSS Grid를 사용하며 디자인 토큰을 JSX에서 사용할 수 있도록 도와줍니다.

Hooks

window.matchMedia를 기반으로 구현된 useBreakpointuseBreakpointValue 훅을 제공합니다.

가능한 경우 항상 CSS 기반으로 작동하는 반응형 prop을 사용하고, 훅은 JS 로직이 필요한 경우에만 사용하세요.

useBreakpoint

현재 속한 breakpoint 이름을 반환합니다.

useBreakpointValue

파라미터로 전달한 반응형 값 객체를 현재 viewport에 맞는 값으로 resolve합니다.

Server-Side Rendering

SSR 등 viewport 정보를 알 수 없는 환경에서 훅 사용 시 적용될 breakpoint 기본값을 정의하려면 BreakpointProvider를 통해 defaultBreakpoint를 지정하세요.

BreakpointProvider 밖에서 훅을 호출했으나 window.matchMedia를 사용할 수 없는 경우, useBreakpointbase를, useBreakpointValuebase key의 값을 반환합니다.

import { BreakpointProvider } from "@seed-design/react";

function App() {
  return (
    <BreakpointProvider defaultBreakpoint="md">
      <MyApp />
    </BreakpointProvider>
  );
}

Last updated on

On this page