ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CSS] flex, grid
    CSS 2024. 4. 15. 16:16
    • 아이템들이 배치된 방향의 축을 메인축(Main Axis)
    • 메인축과 수직인 축을 수직축 또는 교차축(Cross Axis)

    flex컨테이너에 적용하는 속성

     

    display : flex; 

    .container {
    	display: flex;
    	/* display: inline-flex; */
    }

     

    - flex-direction

    이 CSS 속성은 다음의 값들을 인자로 받아 컨테이너 안에서 요소들이 정렬해야 할 방향을 지정

    • row: 요소들을 텍스트의 방향과 동일하게 정렬합니다. (기본값)
    • row-reverse: 요소들을 텍스트의 반대 방향으로 정렬합니다.
    • column: 요소들을 위에서 아래로 정렬합니다.
    • column-reverse: 요소들을 아래에서 위로 정렬합니다.

     

    - flex-wrap

    컨테이너가 더 이상 아이템들을 한 줄에 담을 여유 공간이 없을 때 아이템 줄바꿈을 어떻게 할지 결정하는 속성

    .container {
    	flex-wrap: nowrap;
    	/* flex-wrap: wrap; */
    	/* flex-wrap: wrap-reverse; */
    }
    • nowrap (기본값) : 줄바꿈을 하지 않습니다. 넘치면 계속 이어져 나감
    • wrap : 줄바꿈을 합니다. float이나 inline-block으로 배치한 요소들과 비슷하게 동작
    • wrap-reverse : 줄바꿈을 하는데, 아이템을 역순으로 배치
    • flex-flow
    • flex-direction과 flex-wrap을 한꺼번에 지정할 수 있는 단축 속성
      flex-direction, flex-wrap의 순으로 한 칸 떼고 작성
    .container {
    	flex-flow: row wrap;
    	/* 아래의 두 줄을 줄여 쓴 것 */
    	/* flex-direction: row; */
    	/* flex-wrap: wrap; */
    }

     

    • justify는 메인축 방향으로 정렬
    • align은 수직축 방향으로 정렬

    justify-content:

    .container {
    	justify-content: flex-start;
    	/* justify-content: flex-end; */
    	/* justify-content: center; */
    	/* justify-content: space-between; */
    	/* justify-content: space-around; */
    	/* justify-content: space-evenly; */
    }
    • flex-start: 요소들을 컨테이너의 왼쪽(시작점)으로 정렬합니다.
      (flex-direction이 row(가로 배치)일 때는 왼쪽, column(세로 배치)일 때는 위)
    • flex-end: 요소들을 컨테이너의 오른쪽(끝점)으로 정렬합니다.
      flex-direction이 row(가로 배치)일 때는 오른쪽, column(세로 배치)일 때는 아래
    • center: 요소들을 컨테이너의 가운데로 정렬합니다.
    • space-between: 요소들 사이에 동일한 간격을 둡니다.
    • space-around: 요소들 주위(둘레)에 동일한 간격을 둡니다.

     

    align-items :

    .container {
    	align-items: stretch;
    	/* align-items: flex-start; */
    	/* align-items: flex-end; */
    	/* align-items: center; */
    	/* align-items: baseline; */
    }

    이 CSS 속성은 다음의 값들을 인자로 받아 요소들을 세로선 상에서 정렬

    • flex-start: 요소들을 컨테이너의 꼭대기로 정렬합니다.
    • flex-end: 요소들을 컨테이너의 바닥으로 정렬합니다.
    • center: 요소들을 컨테이너의 세로선 상의 가운데로 정렬합니다.
    • baseline: 요소들을 컨테이너의 시작 위치에 정렬합니다.
    • stretch: 요소들을 컨테이너에 맞도록 늘립니다.

    align-self : 수직축으로 아이템 정렬

    .item {
    	align-self: auto;
    	/* align-self: stretch; */
    	/* align-self: flex-start; */
    	/* align-self: flex-end; */
    	/* align-self: center; */
    	/* align-self: baseline; */
    }
    • 전체 설정보다 개별 설정이 우선

    order : 배치순서

    • 숫자값이 들어가며, 작은 숫자일 수록 먼저 배치됩니다. “시각적” 순서일 뿐, HTML 자체의 구조를 바꾸는 것은 아니므로 접근성 측면에서 사용에 주의

    z-index

    • z-index로 Z축 정렬을 할 수 있어요. 숫자가 클 수록 위로 올라옵니다.
      (position에서의 z-index랑 똑같이 생각하시면 됩니다.)

    Flex는 한 방향 레이아웃 시스템이고 (1차원)

    Grid는 두 방향(가로-세로) 레이아웃 시스템 (2차원)

    .container {
    	display: grid;
    }

     

    • 그리드 형태 정의
    • grid-template-rows: 행(row)의 배치
    • grid-template-columns : 열(column)의 배치
    grid-template-columns: 200px 200px 500px;

    는 column을 200px, 200px, 500px로 만들겠다는 의미

    grid-template-columns: 1fr 1fr 1fr;

    fr은 fraction(뜻은 여기로)인데요, 숫자 비율대로 트랙의 크기를 나눕니다.
    즉 위의 1fr 1fr 1fr은 균일하게 1:1:1 비율인 3개의 column을 만들겠다는 의미

     

    - repeat(반복횟수,반복값)

    .container {
    	grid-template-columns: repeat(5, 1fr);
    	/* grid-template-columns: 1fr 1fr 1fr 1fr 1fr */
    }

     

    -minmax함수 : 최대값과 최솟값을 지정할 수 있는 함수

    minmax(100px, auto)의 의미는 최소한 100px, 최대는 자동으로(auto) 늘어나게.. 입니다. 즉 아무리 내용의 양이 적더라도 최소한 높이 100px은 확보하고, 내용이 많아 100px이 넘어가면 알아서 늘어나도록 처리해 준 예시

    .container {
    	grid-template-columns: repeat(3, 1fr);
    	grid-template-rows: repeat(3, minmax(100px, auto));
    }

     

    - 각 셀의 영역 지정

    grid-column-start (그리드 시작 열위치 지정) 이 단독으로 사용될때는, 한개의 그리드 열(column)을 나타냅니다.

    하지만, grid-column-end 속성을 같이 사용하면 여러 열(column)에 걸쳐 확장이 가능

     

    **span**을 이용하여 열(column)의 넓이를 지정할 수 있습니다. **span**은 양수만 설정 가능

    **grid-area**은 /(슬래쉬)로 구분지어 grid-row-startgrid-column-startgrid-row-end, **grid-column-end**순으로 입력 가능

    'CSS' 카테고리의 다른 글

    [CSS] px em rem, max min -width  (0) 2024.04.17
    [CSS] Selector 선택자  (0) 2024.04.17
    [CSS] 기본  (0) 2024.03.31
Designed by Tistory.