Breakpoint 정의
실무에서 사용하는 일반적인 breakpoint를 의미 있는 이름으로 정의합니다.
Breakpoint는 디바이스 타입보다는 레이아웃이 변경되는 의미로 정의하는 것이 좋습니다.
예를 들어, "태블릿"보다는 "2단 레이아웃에서 3단 레이아웃으로 변경되는 지점"이 더 명확합니다.
요약 설명레이아웃 시스템은 페이지 구조를 체계적으로 관리하는 핵심 요소입니다.
반응형을 "여기저기 흩어진 미디어쿼리"가 아닌 구조 레벨에서 제어하면, 유지보수성과 일관성이 크게 향상됩니다.이 페이지에서는 App Layout(Header/Main/Footer), Grid/Flex 기반 레이아웃, Breakpoint 변수 정의와 활용 방법을 상세히 알아봅니다.
레이아웃 시스템은 페이지의 전체 구조를 정의하고 관리하는 시스템입니다.
Header, Main, Footer 등의 영역과 그 안에서의 Grid, Flex 레이아웃을 체계적으로 구성합니다.
반응형은 컴포넌트 안에서 처리하는 것이 아니라 레이아웃 레벨에서 결정되므로, 레이아웃 시스템에 반응형 로직을 포함시켜야 합니다.
Breakpoint는 디바이스 크기에 따라 레이아웃이 변경되는 지점입니다.
픽셀 값이 아니라 의미 있는 이름으로 정의하면, 코드의 가독성이 향상되고 유지보수가 쉬워집니다.
실무에서 사용하는 일반적인 breakpoint를 의미 있는 이름으로 정의합니다.
Breakpoint는 디바이스 타입보다는 레이아웃이 변경되는 의미로 정의하는 것이 좋습니다.
예를 들어, "태블릿"보다는 "2단 레이아웃에서 3단 레이아웃으로 변경되는 지점"이 더 명확합니다.
Breakpoint를 쉽게 사용할 수 있도록 믹스인을 만듭니다.
믹스인을 사용하면 @media (min-width: 768px) 대신 @include breakpoint-up(md)처럼 의미 있는 이름으로 작성할 수 있습니다.
정의한 breakpoint 믹스인을 실제 레이아웃에 적용하는 방법입니다.
이렇게 하면 breakpoint 값이 변경되어도 믹스인 내부만 수정하면 되므로, 모든 레이아웃에 일괄 적용됩니다.
앱의 전체 구조를 정의하는 레이아웃입니다.
Header, Main, Footer 영역을 명확히 구분하고, 각 영역의 역할과 스타일을 정의합니다.
Header, Main, Footer를 포함한 기본 앱 레이아웃 구조입니다.
flex: 1을 사용하여 Main 영역이 남은 공간을 모두 차지하도록 하고, Header와 Footer는 항상 상하에 고정되도록 합니다.
화면 크기에 따라 Header와 Main의 레이아웃을 변경합니다.
모바일에서는 세로 배치(Header 위, Main 아래), 데스크톱에서는 가로 배치(Header 왼쪽, Main 오른쪽)로 변경됩니다.
※ 코드펜에서는 SCSS 파셜을 사용할 수 없으므로, 토큰과 레이아웃 스타일을 하나의 SCSS 파일에 통합해야 합니다.
CSS Grid를 사용하여 유연하고 강력한 레이아웃을 구성합니다.
Grid는 2차원 레이아웃을 쉽게 만들 수 있어 복잡한 레이아웃에 적합합니다.
반응형 Grid 레이아웃을 만드는 방법입니다.
화면 크기가 커질수록 열의 개수가 증가하여, 공간을 효율적으로 활용할 수 있습니다.
Grid의 고급 기능을 활용하여 복잡한 레이아웃을 만드는 방법입니다.
Grid의 grid-column과 grid-row를 사용하면 각 요소의 위치를 정확히 제어할 수 있습니다.
※ 코드펜에서는 SCSS 파셜을 사용할 수 없으므로, 이 예시는 사용되는 토큰만을 하나의 SCSS 파일에 모아 작성한 예제입니다.
Flexbox를 사용하여 1차원 레이아웃을 구성합니다.
Flex는 항목들을 한 방향으로 배치할 때 매우 유용하며, 정렬과 공간 분배를 쉽게 제어할 수 있습니다.
자주 사용하는 Flex 패턴을 믹스인으로 만들어 재사용성을 높입니다.
자주 사용하는 Flex 패턴을 믹스인으로 만들어두면 코드가 간결해지고 일관성이 유지됩니다.
정의한 Flex 믹스인을 실제 컴포넌트에 적용하는 방법입니다.
모바일에서는 세로 배치, 데스크톱에서는 가로 배치로 자동 전환되어 반응형 레이아웃이 완성됩니다.
※ Flex 레이아웃의 실제 적용 예시는 이전 섹션의 [반응형 App Layout 적용 예시]에서 확인할 수 있습니다.
Container는 콘텐츠의 최대 너비를 제한하고 중앙 정렬하는 레이아웃 요소입니다.
실무에서는 모든 콘텐츠가 화면 전체 너비를 사용하지 않고, 적절한 최대 너비 내에서 표시되어 가독성을 향상시킵니다.
대형 모니터에서 텍스트나 콘텐츠가 화면 전체 너비로 펼쳐지면 가독성이 떨어집니다. Container를 사용하면:
화면 크기에 따라 최대 너비가 조절되는 컨테이너입니다.
각 속성의 역할:
width: 100%: 모바일에서는 화면 전체 너비 사용margin-left: auto; margin-right: auto: 좌우 마진을 자동으로 설정하여 중앙 정렬padding-left/right: 좌우 패딩으로 콘텐츠가 화면 가장자리에 붙지 않도록 여백 제공max-width: 화면 크기에 따라 최대 너비 제한 (모바일: 제한 없음 → 태블릿: 720px → 데스크톱: 1140px)모바일에서는 전체 너비를 사용하고, 화면이 커질수록 최대 너비가 증가하여 가독성을 유지합니다.
Container와 Wrapper는 비슷하지만 사용 목적이 다릅니다.
실무에서는 Container를 사용하여 콘텐츠 영역의 너비를 제한하고, Wrapper는 더 넓은 의미의 레이아웃 구조를 만들 때 사용합니다.
레이아웃 시스템과 반응형 구조에 대해 알아본 내용을 정리합니다.
다음 페이지에서는 핵심 UI 컴포넌트를 구성하는 방법을 알아봅니다.