FrontEnd Programming

[FrontEnd] 12. Grid

코딩펭귄 2024. 3. 12. 17:33

Grid

레이아웃을 만드는 property

- Flex1차원 레이아웃 (가로 아니면 세로)

- Grid2차원 레이아웃 (가로와 세로)

- Flex 보다 복잡한 레이아웃을 간편하게 만들 수 있다.

 

 

그리드 형태 정의1 (pixel)

 

 

 

.container {

    display: grid;

    grid-template-columns: 200px 200px 500px;
    
grid-template-rows: 200px 200px 500px;

}

 

 

 

그리드 형태 정의2 (비율, fraction)

  

 

 

.container {

    height: 500px;

    display: grid;

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

}

 

 

 

그리드형태 정의3(pixel + fraction)

 

.container {

    height: 500px;

    width: 500px;

    display: grid;

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

    grid-template-rows: 1fr 1fr 300px;

}

 

 

 

그리드형태 정의4(최소/최대크기 설정, minmax)

 

.container {

    height: 500px;

    width: 500px;

    display: grid;

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

    grid-template-rows: 1fr 1fr       minmax(100px, auto);

}

 

 

 

간격만들기

 

.container {

    height: 500px;

    display: grid;

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

    grid-template-rows: 1fr 1fr minmax(100px, auto);

    row-gap: 10px; /* row의 간격을 10px로 */

    column-gap: 20px; /* column의 간격을 20px로 */

 

 

 


 

Grid Item

Grid Item : 칸과 칸을 합칠 수 있음 = 아이템의 영역 지정

 

1. 범위 지정하는 방법
.grid > div:nth-child(2){
    grid-column-start:2;
    grid-column-end:4; 

    grid-row-start:1;
    grid-row-end:2;
    
    /* -1 : '끝까지' 라는 의미  */
    grid-row: 2 / -1;
}
1.1 범위지정을 더 간편하게
.grid > div:nth-child(2){
    grid-column: 2 / 4;
    grid-row: 1 / 2;
}

 

2. span 사용방법 - 2번부터 시작해서 span을 1칸만큼 해라
.grid > div:nth-child(4){
    grid-column: 2 / span 1;
    grid-row: 2 / span 2;
}

 

 

 

* 표 사이사이에 margin처럼 일정한 공간을 만들고싶다면, gap을 사용하면 된다(아래사진에서 빗금쳐진 부분)

.grid{
    display: grid;
    width: 50rem;
    height: 50rem;
    grid-template-columns: 1fr 1fr 2fr;
    grid-template-rows: 1fr 1fr 2fr;
    gap: 1rem;
}