Grid에 대해 자세히 알아보기
아직 그리드가 어떻게 사용되는지 와닿지 않죠? 본격적으로 시작하기 전에, Grid 레이아웃의 핵심 개념을 조금 더 자세히 소개하겠습니다.
grid-template-columns
CSS Grid 레이아웃에서 그리드 컨테이너의 열(column, 세로줄)의 갯수와 너비를 지정하는 속성입니다.
예를 들어
.container {
display: grid;
grid-template-columns: 100px 200px;
}
위와 같은 클래스는 .container
클래스를 가진 요소를 그리드 컨테이너로 설정하고, grid-template-columns
속성을 사용해 열(세로줄)의 갯수와 크기를 지정합니다.
grid-template-columns: 100px 200px;
는 그리드 열을 2개 만들고, 첫 번째 열의 너비를 100px 두 번째 열의 너비를 200px로 정합니다.
만약 그리드 컨테이너의 열을 동일하게 3번 반복하여 생성하고 각 열의 너비를 동일하게 설정하려면, grid-template-columns: repeat(3, 1fr);
를 사용할 수 있습니다.
영어 단어 repeat
은 "반복하다"라는 의미이고, 3은 동일한 너비의 열을 "3번 반복해서" 만 든다는 의미입니다.
1fr
은 가용 공간을 동일한 비율로 분할한다는 뜻이며, 열의 너비를 균등하게 설정합니다.
여기서 fr
은 그리드 컨테이너 내에서 사용 가능한 공간의 비율을 의미합니다.
grid-auto-columns
방금 소개한 grid-template-columns
에서 "template" 대신 "auto"가 들어가 있습니다.
grid-auto-columns
는 그리드 컨테이너 내에서 그리드 아이템이 생성될 때 추가 열(세로줄)의 너비를 지정할 수 있습니다.
예를 들어, 다음과 같은 CSS 코드를 사용하면 그리드 컨테이너 내의 추가적인 열의 너비를 설정할 수 있습니다.
.container {
display: grid;
grid-template-columns: 100px 200px;
grid-auto-columns: 150px;
}
위의 코드는 "grid-template-columns" 속성을 사용해 첫 번째 열의 너비를 100px, 두 번째 열의 너비를 200px로 설정합니다.
그리고 "grid-auto-columns" 속성을 사용해 추가적으로 생성되는 그리드 아이템 열의 너비를 150px로 설정합니다.
grid-template-row
CSS Grid 레이아웃에서 그리드 컨테이너의 행(row, 가로줄)의 크기와 높이를 지정하는 속성입니다.
방금 배운 grid-template-columns
의 모든 특성이, 세로줄이 아닌 "가로줄"로 적용된다고 생각할 수 있습니다.
예를 들어,
.container {
display: grid;
grid-template-rows: 100px 200px 150px;
}
위의 코드는 grid-template-rows: 100px 200px 150px;
속성을 사용해 그리드 행을 3개 만들고, 첫 번째 행의 높이를 100px, 두 번째 행의 높이를 200px, 세번째 행의 높의를 150px로 정합니다.
grid-template-columns
와 마찬가지로 grid-template-rows: repeat(3, 1fr);
를 사용하면 동일한 높이의 행을 "3번 반복해서" 만든다는 의미입니다.
3. grid-auto-rows
: 앞서 설명한 "grid-auto-columns"처럼, "grid-auto-rows"는 그리드 컨테이너 내에서 그리드 아이템이 생성될 때 추가 행의 높이를 지정합니다.
예를 들어,
.container {
display: grid;
grid-template-rows: 100px 200px;
grid-auto-rows: 150px;
}
위의 코드는 "grid-template-rows" 속성을 사용하여 첫 번째 행의 높이를 100px, 두 번째 행의 높이를 200픽셀로 설정합니다.
그리고 "grid-auto-rows" 속성을 사용하여 추가적으로 생성되는 그리드 아이템의 행 높이를 150px로 설정합니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!