CSS

1. FlexBox

  • CSS3에서 도입된 레이아웃 기능으로, HTML의 요소들에 대한 정렬에 대해 직접 수치화 하지 않아도, 유연하게(Flexible) 요소를 정렬시켜 주는 기능이다.

  • 요소를 화면에 수직/수평정렬 시키고자 할 때 사용하면 유용하다.

  • 수직/수평정렬시의 남는 여백에 대한 유연한 설정이 가능하다.

  • 기존 레이아웃 정렬방식인 float, inline-block에 비해 훨씬 간단하게 요소들을 정렬시킬 수 있다.

  • 예시사이트) https://open.spotify.com/

    • 아이템 좌우 배치에 사용

1) flexbox의 주요 개념

①Flex Container

  • Flex Item의 부모 요소로 display: flex로 설정한다.

  • 정렬이 필요한 요소를 감싸는 역할을 한다.

②Flex Item

  • 정렬이 적용될 요소로 , Flex Container의 자식요소로써 포함된다.

Flexbox에는 Flex Conainer와 Flex Item별로 사용 가능한 메서드의 종류가 다르므로 이에 대한 구분이 필요하다.

③ Flex Box의 축(axis)

  • Flex박스에는 중심축(main axis)과 교차축(cross axis)가 존재한다.

  • flex박스는 중심축에 적용되는 css스타일과 교차축에 적용되는 css스타일이 구분되어 있으므로 각 축의 정의에 대한 이해가 필요하다.

2) flexbox의 주요 속성

①Flex Container

속성
설명

flex-direction

아이템 배치 방향 설정

justify-content

main axis 정렬

align-items

cross axis 정렬

align-content

여러 행의 정렬 방식

flex-wrap

줄바꿈 여부 설정

gap

아이템 간 간격

②Flex Item

속성
설명

flex-grow

여유 공간 비율 설정

flex-shrink

줄어드는 비율 설정

flex-basis

기본 크기 설정

flex

위 3개를 한 번에 설정 (flex: 1 등)

align-self

개별 아이템 정렬

order

아이템 순서 변경

2. Grid

  • Grid는 행(Row)과 열(Column)을 기준으로 요소를 배치하는 CSS의 레이아웃 기능입니다. FLEX가 한방향 정렬에 특화 되어 있다면 GRID는 2차원 레이아웃정렬에 특화되어 있습니다.

  • Grid를 활용하면 복잡합 웹페이지 설계도 쉽게 구현이 가능하며, flexbox와 함께 활용하면 대부분의 레이아웃 문제를 해결할 수 있습니다.

  • 예시사이트) https://htmlburger.com/blog/grid-layout-website-examples/

    • 문제 전체가 grid로 설계

1) grid 주요 개념

①Grid Container

  • Grid Item의 부모 요소로 display: grid로 설정한다.

②Grid Item

  • 정렬이 적용될 요소로 , Grid Container의 자식요소로써 포함된다.

2) grid의 주요 속성

①Grid Container

속성
설명

grid-template-columns

열 너비와 개수 정의

grid-template-rows

행 높이 정의

grid-template-areas

영역 이름으로 레이아웃 구성

grid-auto-rows

자동 생성 행의 높이

grid-auto-columns

자동 생성 열의 너비

grid-auto-flow

아이템 배치 방향 (row, column)

gap

행/열 간 간격 설정

②Grid Item

속성
설명

grid-column-start, grid-column-end

열 시작/끝 위치 지정

grid-row-start, grid-row-end

행 시작/끝 위치 지정

grid-column

열 병합 (grid-column: 1 / 3)

grid-row

행 병합 (grid-row: 2 / span 2)

grid-area

이름으로 위치 지정

justify-self

개별 아이템 수평 정렬

align-self

개별 아이템 수직 정렬

Last updated