🏓 Grid layout
css에서 호환하는 grid 레이아웃 시스템은 행과 열로 이루어져있다. 사용자들에게 좀 더 쉽게 웹을 디자인하고 요소들을 위치시키는데 도움을 주기 위함 이라고 한다.
🍉 Grid가 적용되는 브라우저 버전
- 각 브라우저의 해당 버전이상에서만 호환이 되니 참고!
🥭 GRID 레이아웃 3x3예시
- 이렇게 9가지의 요소가 격자로 표현될 수 있게 도와주는 것이 GRID 레이아웃이다.
GRID 레이아웃 사용하기 위해 필요한 개념
- GRID로 정렬하기 위해서는 부모 패널이 있어야 되고, 그 안에 요소들을 넣어야 된다.
/* 부모가 필요한 정의 */ .grid-container { display: grid; grid-template-columns: auto auto auto; } /* 자식이 필요한 정의 */ <div class="grid-container"> /* 이렇게 부모 내부에 자식이 요소로 들어가야된다.*/ <div class="grid-item">1</div> <div class="grid-item">2</div> <div class="grid-item">3</div> <div class="grid-item">4</div> <div class="grid-item">5</div> <div class="grid-item">6</div> <div class="grid-item">7</div> <div class="grid-item">8</div> <div class="grid-item">9</div> </div>
display
를 grid
로 설정grid-template-columns
을 auto auto auto;
로 설정- auto auto auto를 3개가 반복이 되었는데, 이것은 추가되는 요소를 모두 가로 3개 요소로 나열하겠다는 뜻이다.
- 만약 8개가 추가되면 9번째 자리는 빈자리가 된다.
- GRID 내부 요소를 비율을 직접 지정하고 싶다면
fr
을 사용
/* 해당라인을 부모의 속성에 넣는다. */ grid-template-columns: 1fr 1fr 1fr 1fr;
1fr
이 하나만 있으면 전체비율을 1로 나눠서 전체 비율을 차지한다.1fr
이 두 개 있으면 전체 비율을 1:1 로 나누서 50:50이 된다. 1fr
이 1/4이 비율이 되었다. 총 fr 합
대비 부분 fr
로 정의 된다.- 만약,
1fr 3fr 1fr
으로 설정한다면, 총 합인 5를 전체비율로 잡고1/5, 3/5, 1/5
로 공간을 차지한다.
🍐 GRID에 갭을 주고 싶을 때
칼럼(Column)과 로우(Row)의 개념 정리
- 칼럼은 열이라고 생각하면 되며, 각 사이에 있는 세로 틈을
Column Gap
이라 한다.
- 로우는 행이라고 생각하면 되며, 각 사이에 있는 가로 틈을
Row Gap
이라 한다.
- 옆에 보이는 것과 같이
Column Gap
과Row Gap
을 다시 확인해보자.
- GRID에 Gap을 넣을려면 부모 속성에 아래 코드를 넣으면된다.
grid-gap: 20px; -------> 가로 세로 한번에 갭 20픽셀을 넣는다. ----------------- grid-row-gap: 20px -------> 가로 갭을 20픽셀 넣는다. ----------------- grid-column-gap: 20px -------> 세로 갭을 20픽셀 넣는다.
grid-gap: 20px;
을 넣으면 각 요소에 가로 세로로 갭이 생긴다.
grid-row-gap: 20px
을 넣으면 가로 갭만 들어간다.
grid-column-gap: 20px
을 넣으면 세로 갭만 들어간다.
마지막요소 속성 걸기 문법
/*마지막요소 속성 추가*/ .grid-item: last-child { color: red; }
- 이미 선언되어있는 부모와 자식 속성을 건드리지 않고
.자식클래스명 : last-child {}
로 속성 추가가 가능하다. - 마지막 요소인 9번째 요소가 빨간색으로 변했다.
- 중괄호 안에
grid-column-start: 1;
속성을 추가해보자.
.grid-item:last-child { color: red; grid-column-start: 1; }
grid-column-start: 3 span;
문법을 사용하면 컬럼 갯수만큼 공간을 차지한다.
.grid-item:last-child { color: red; grid-column-start: 3span; }
grid-column-end: 2 span;
: 두칸 차지
span
을 쓰지 않고1/3, 2/3, 3/3
으로도 표현이 가능하다. 하지만 이를 사용하기 위해서는 컬럼 세로선의 번호를 알아야 한다.
grid-column: 1/3;
: 두칸 차지
- 물론 가로도 가능하다. 가로선의 번호 명시 방법을 보자.
- 그럼 가로 세로를 합쳐서도 가능하다. 두 개를 같이 적용해보자.
.grid-item:last-child { color: red; grid-column: 1/3; grid-row: 1/3; }
팁정리 💡
- 선택자
- 태그 명또는 클래스 클래스 사용할 떄는 .
- 파라메터는 띄어쓰기로 구분한다. 마지막은 세미콜론
- 아이콘 이모지가 제일 편하다.
- 이모지로 할수 없으면 svg로 하면 더 수비다.
- 그 외에대한 경우는 이미지 첨부인데, 그러기 위해서는 부모 relative 자식 abolute구현해야된다.
- 배치는 부모가 관리한다.
- 제트 인덱스 z-index
- 몇번째로 겹치는지 말하느느 인덱스
Share article