EverGiver
CSS 그리드 레이아웃 본문
728x90
CSS 그리드 레이아웃에서 사용하는 용어
- 그리드 항목을 배치할 때 가로 열(줄)과 세로 행(칼럼)을 모두 사용
CSS 그리드 레이아웃 항목을 배치하는 속성
- 그리드 컨테이너를 지정하는 display 속성
종류 설명 grid 컨테이너 안의 항목을 블록 레벨 요소로 배치 inline-grid 컨테이너 안의 항목을 인라인 레벨 요소로 - 칼럼과 줄을 지정하는 grid-template-columns, grid-template-rows 속성
- grid-template-columns 속성
▷ 그리드 컨테이너 안에 항목을 배치할 때 칼럼의 크기와 개수를 지정
(몇 개의 칼럼으로 배치할지, 각 칼럼의 너비를 얼마로 할지 지정)
- grid-template-rows 속성
▷ 그리드 컨테이너 안에 항목을 배치할 때 줄의 크기와 개수를 지정
#wrapper{ display:grid; grid-template-columns: 200px 200px 200px; // 너비가 200px인 칼럼 3개 grid-template-rows:100px; // 줄 높이 100px }
- 상대적인 크기를 지정하는 fr 단위
- 그리드 레이아웃에서는 상대적 크기를 지정할 수 있도록 fr(fraction) 단위를 사용한다.
grid-template-columns:1fr 1fr 1fr; // 너비가 같은 칼럼을 3개 배치 grid-template-columns:2fr 1fr 2fr; // 너비가 2:1:2로 배치
- 값이 반복될 때 줄여서 표현할 수 있는 repeat( )함수
- px이나 fr 단위를 사용하면 똑같은 값을 여러 번 반복해야 한다.
- CSS 그리드 레이아웃에는 내장된 repeat( )이라는 함수를 사용하면 반복하지 않고 간단하게 표현할 수 있다.
grid-template-columns:1fr 1fr 1fr; grid-template-columns: repeat(3, 1fr);
- 최솟값과 최댓값을 지정하는 minmax( ) 함수
- minmax() 함수를 사용하면 줄 높이를 고정하지 않고 최솟값과 최댓값을 사용해서 유연하게 지정할 수 있다.
#wrapper{ width:600px; display:grid; /* 그리드 컨테이너 지정 */ grid-template-columns:repeat(3, 1fr); /* 너비가 같은 칼럼 3개 */ grid-template-rows: minmax(100px, auto); /* 줄 높이 최소 100px */ }
- 자동으로 칼럼 개수를 조절하는 auto-fill, auto-fit 값
- 칼럼의 너빗값과 함께 auto-fill이나 auto-fill을 지정하면 화면 너비에 따라 칼럼 개수를 조절할 수 있다.
- auto-fit이나 auto-fill 모두 칼럼 개수를 자동으로 조절해 주므로 화면이 넓어지면 칼럼 개수가 많아지고 반대로 화면이 좁아지면 칼럼 개수가 줄어든다.grid-template-columns: repeat(auto-fit, 200px);
- 두 값의 차이점은 남는 공간을 채울지 말지 여부에 달려있다.
- auto-fit을 사용하면 화면이 넓을 때에는 남은 공간 없이 꽉 채워서 칼럼을 표시하고, auto-fill을 사용하면 칼럼의 최소 너비만 표시하고 남는 공간은 그대로 둔다.
#wrapper1 { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); /* 화면을 꽉 채울만큼 칼럼 너비를 늘려서 표시 */ margin-bottom: 20px; } #wrapper2 { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* 칼럼 최소 너비만큼 채워서 표시 */ }
- 그리드 항목의 간격을 지정하는 grid-column-gap, grid-row-gap, grid-gap 속성
- 항목과 항목 사이의 간격을 조절
종류 설명 grid-column-gap 칼럼과 칼럼 사이의 간격을 지정 gird-row-gap 줄과 줄 사이의 간격을 지정 grid-gap 칼럼과 줄 사이의 간격을 한꺼번에 지정 - 그리드 라인을 이용해 배치하기
- 그리드 라인을 이용해서 그리드 항목을 배치할 수 있다.
종류 설명 예시 grid-column-start 칼럼 시작의 라인 번호를 지정한다. grid-column-start: 1 grid-column-end 칼럼 마지막의 라인 번호를 지정한다. grid-column-end: 1 grid-column 칼럼 시작 번호와 칼럼 끝 번호 사이에 슬래시(/)를 넣어 사용한다. grid-column: 1/4 grid-row-start 줄 시작의 라인 번호를 지정한다. grid-row-start: 2 grid-row-end 줄 마지막의 라인 번호이다. grid-row-end: 4 grid-row 줄 시작 번호와 끝 번호 사이에 슬래시(/)를 넣어 사용한다. grid-row: 2/4 .box1 { background-color:#3689ff; grid-column:1/4; } .box2 { background-color:#00cf12; grid-row:2/4; /* grid-column:1/2; */ grid-column-start:1; } .box3 { background-color:#ff9019; grid-column:2/4; /* grid-row:2/3; */ grid-row-start:2; } .box4 { background-color:#ffd000; grid-column-start:3; grid-row-start:3; }
- 템플릿 영역을 만들어 배치하기
- 템플릿 영역으로 항목을 배치하면 그리드 레이아웃을 만드는 것보다 더 쉽다.
- 방법
1. grid-area 속성을 사용해서 각 영역에 템플릿 이름을 지정해준다.
2. 컨테이너 영역에서 grid-template-areas 속성을 사용해 템플릿 영역을 어떻게 배치할지 지정한다.
(템플릿 영역을 비워 두려면 그 자리에 마침표(.)를 넣는다.)
3. 한 줄에 들어갈 템플릿 영역을 큰따옴표("")로 묶어준다.
<style> #wrapper { width: 700px; display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 100px); grid-template-areas: "box1 box1 box1" "box2 box3 box3" "box2 . box4"; } .box { padding: 15px; color: #fff; font-weight: bold; text-align: center; } .box1 { background-color: #3689ff; grid-area: box1; } .box2 { background-color: #00cf12; grid-area: box2; } .box3 { background-color: #ff9019; grid-area: box3; } .box4 { background-color: #ffd000; grid-area: box4; } </style>
728x90
'Front-End (웹) > 반응형 웹과 미디어 쿼리' 카테고리의 다른 글
플렉스 박스 레이아웃 (0) | 2022.01.12 |
---|---|
그리드 레이아웃 (0) | 2022.01.11 |
미디어 쿼리 알아보기 (0) | 2022.01.11 |
반응형 웹 (0) | 2022.01.11 |
Comments