그리드 아이템
그리드 설정 - Grid 아이템
grid-column-start grid-column-end grid-column grid-row-start grid-row-end grid-row
각 셀의 영역을 지정한다.
음수값을 사용해서 끝 점에서의 상대적 위치 이동도 가능하다.
.grid {
display: grid;
grid-auto-columns: repeat(3, 150px);
grid-auto-rows: repeat(2, 150px);
}
.item:nth-child(1) {
/* 그리드 아이엠을 열[3,4] 행[2,3] 위치에 배치 */
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 2;
grid-row-end: 3; /* 그리드 라인이 1-3번까지만 있기 때문에 grid-row-end: 3;을 입력하지 않아도 정상작동 */
}
/* 속기형 */
/* grid-column: start/end */
/* grid-row: start/end */
.item:nth-child(1) {
grid-column: 3/4;
grid-row: 2/3;
/* start와 end값이 같을 때 기본값: span1 */
grid-row: 2;
}
Grid Area의 속기형
grid-area : grid-row-start / grid-column-start / grid-row-end / grid-column-end
그리드의 라인의 갯수가 많아지면 마지막 라인의 넘버를 기억하기 쉽지 않다. 그래서 마지막 라인
-1
을 입력해 주는 것이 편리하다.
.item:nth-child(1) {
grid-column: 1/3;
grid-row: 1/2;
/* 또는 */
grid-area: 1 / 1 / 2 / 3;
}
Grid Span
기본값 : 1
기준 라인이 중요하다.
그리드 영역 선택 가능
span값이 start자리에 있다면 start쪽 방향으로, end자리에 있다면 end쪽 방향으로
.item:nth-child(1) {
/* column라인 3번에서 오른쪽(end)방향으로 2칸 : grid-column: 3/5 */
grid-column: 3 / span 2;
/* row라인 4번에서 위쪽(start)방향으로 3칸 : grid-row: 1/4 */
grid-row: span 3/4;
}
order
그리드 아이템을 재 정렬한다.
단, 순서를 변경해도 접근성에 문제가 발생하지 않는 경우에만 사용해야 한다.
기본값 : 0
.grid {
display: grid;
grid-template-rows: repeat(3, 1fr);
grid-template-columns: repeat(3, minmax(50px, auto));
}
/* 모든 아이템의 기본값은 0이기 때문에 1번 아이템에 오더값을 4를 준다고 해서 4번 째 칸으로 이동하지 않고 맨 마지막 칸으로 이동한다. */
.item:nth-child(1) {
order: 4;
}
.item:nth-child(2) {
order: 0;
}
.item:nth-child(3) {
order: 0;
}
.item:nth-child(4) {
order: 0;
}
.item:nth-child(5) {
order: 0;
}
.item:nth-child(6) {
order: 0;
}
/* 부모 컨테이너에 렌더링되는 아이템 번호 순서는 4,2,6,1,3,5 이다. */
.item:nth-child(1) {
order: 4;
}
.item:nth-child(2) {
order: 2;
}
.item:nth-child(3) {
order: 5;
}
.item:nth-child(4) {
order: 1;
}
.item:nth-child(5) {
order: 6;
}
.item:nth-child(6) {
order: 3;
}
grid-template-areas
각 그리드 영역에 이름을 붙이고, 그 이름을 사용해서 배치한다.
셀의 개수 만큼 해당 위치에 이름을 입력한다.
그리드 영역 이름을 반복하면 그리드 셀을 병합(merge, span)한다.
마침표 (.)는 비어있는 그리드 셀을 의미한다. (빈칸으로 표시됨)
/* 각 열과 행을 식별자 이름으로 구분시켜준다. */
.grid {
grid-template-areas:
"header header header" /* 1행: 3열 모두 header */
"sidebar content1 content2" /* 1행: 1열 sidebar, 1열 content1, 1열 content2 */
"sidebar content3 content3"
"footer footer footer";
/* " . . . " */
/* " main . sidebar " */
}
/* 그리드 영역에 식별자 이름을 입력 */
/* 요소의 이름과 grid-area의 이름이 꼭 같은 필요는 없다. .header { grid-area: top; } */
.header {
grid-area: header;
}
.sidebar {
grid-area: sidebar;
}
.content-1 {
grid-area: content1;
}
.content-2 {
grid-area: content2;
}
.content-3 {
grid-area: content3;
}
.footer {
grid-area: footer;
}
justify-self align-self : 개별 아이템 가로/세로 정렬
justify-self
: 행(row) 축을 따라 특정한 아이템을 정렬한다.align-self
: 열(column) 축을 따라 특정한 아이템을 정렬한다.값
stretch
start
center
end
.item.item-1 {
justify-self: center;
align-self: center;
}
Last updated
Was this helpful?