IMCAT.DEV
로그인 가입
CSS 중급 자료구조

CSS 그리드 레이아웃 심화

CSS 그리드 레이아웃 심화 — 중급

그리드 레이아웃 심화

1. 도입 (왜 배워야 하는가)

그리드 레이아웃은 현대 웹 디자인에서 필수적인 도구입니다. 반응형 웹 디자인을 구현할 때 그리드 시스템을 사용하면 다양한 화면 크기와 비율에 맞춰 콘텐츠를 효율적으로 배치할 수 있습니다. 실무에서 그리드 레이아웃을 잘 활용하지 못하면, 사용자 경험이 저하되거나 디자인이 일관성을 잃을 수 있습니다. 특히 모바일 환경에서의 레이아웃 깨짐 현상은 사용자의 이탈을 초래할 수 있기 때문에, 그리드 레이아웃에 대한 이해가 필수적입니다.

2. 핵심 개념 설명

그리드 레이아웃의 핵심 개념은 크게 다음과 같습니다.

용어정의
Grid Container그리드 아이템을 포함하는 부모 요소
Grid Item그리드 컨테이너 내에서 배치되는 자식 요소
Track그리드 컨테이너의 행(row) 또는 열(column)
Cell그리드의 각 교차점으로, 그리드 아이템이 배치되는 공간
Area그리드의 특정 영역으로, 여러 개의 셀로 구성될 수 있음

비유: 그리드 레이아웃은 마치 정돈된 책상 위에 물건들을 배치하는 것과 같습니다. 책상(그리드 컨테이너) 위에 책(그리드 아이템), 필기구, 노트 등을 정리하는 방식으로, 각 물건이 어떤 자리에 놓일지 계획하는 것입니다.

3. 기본 코드 예제

가장 간단한 그리드 레이아웃을 만드는 코드입니다.

.container {
    display: grid; / 그리드 컨테이너로 설정 /
    grid-template-columns: repeat(3, 1fr); / 3개의 열을 같은 비율로 설정 /
    gap: 10px; / 각 셀 간의 간격을 10px로 설정 /
}

.item {
    background-color: lightblue; / 각 아이템의 배경색을 연한 파란색으로 설정 /
    padding: 20px; / 아이템 안의 여백을 20px로 설정 /
    text-align: center; / 텍스트를 중앙 정렬 /
}

실행 결과

  • 3개의 열로 나누어진 그리드가 생성되며, 각 아이템은 연한 파란색 배경과 중앙 정렬된 텍스트를 가집니다.
  • 코드 동작 설명

  • display: grid;: 이 속성은 해당 요소를 그리드 컨테이너로 변환합니다.
  • grid-template-columns: repeat(3, 1fr);: 3개의 열을 생성하며, 각 열의 너비를 동일하게 설정합니다.
  • gap: 10px;: 각 그리드 셀 사이에 10픽셀의 간격을 추가합니다.
  • .item: 각 그리드 아이템에 스타일을 적용합니다.
  • 4. 실전 활용 예제

    예제 1: 쇼핑몰 장바구니 레이아웃

    쇼핑몰에서 장바구니를 구현할 때, 제품 이미지를 그리드로 배치할 수 있습니다.

    .cart {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); / 자동으로 열을 추가 /
        gap: 15px; / 각 아이템 간의 간격 /
    }

    예제 2: 포트폴리오 웹사이트

    포트폴리오 사이트에서 프로젝트 이미지를 균형 있게 배치할 수 있습니다.

    .portfolio {
        display: grid;
        grid-template-rows: auto auto; / 두 개의 행으로 나누기 /
        grid-template-columns: 1fr 1fr 1fr; / 세 개의 열로 나누기 /
    }

    5. 흔한 실수와 주의사항

    실수 1: 그리드 컨테이너 설정 누락

    / 잘못된 코드 /
    .item {
        grid-column: 1 / 3; / 오류 발생: 부모가 그리드가 아님 /
    }
  • 올바른 코드
  • .container {
        display: grid;
    }

    실수 2: gap 속성 사용 미비

    / 잘못된 코드 /
    .container {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        / gap 속성이 없음 /
    }
  • 올바른 코드
  • .container {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 10px; / spacing 적용 /
    }

    6. 정리

  • 그리드 레이아웃은 웹 디자인의 핵심 요소입니다.
  • 그리드 컨테이너와 아이템 개념을 이해해야 합니다.
  • 다양한 레이아웃 패턴을 활용하여 반응형 디자인을 쉽게 구현할 수 있습니다.
  • 다음에 학습하면 좋은 주제

  • Flexbox를 활용한 레이아웃 기법
  • CSS 변수와 사용자 정의 속성 활용
  • 고급 그리드 레이아웃을 위한 미디어 쿼리 사용법