CSS Grid Layout Module은 행(rows)과 열(columns)이 있는 그리드 기반 레이아웃 시스템을 제공하여,
floats와 positioning을 사용하지 않고도 웹 페이지를 더 쉽게 디자인할 수 있습니다.
그리드 레이아웃은 하나 이상의 자식 요소가 있는 부모 요소로 구성됩니다.
<style> .grid-container { display: grid; grid-template-columns: auto auto auto; background-color:#2196F3; padding: 10px; } .grid-item { background-color: rgba(255, 255, 255,0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; } </style> </head> <body> <h1>Grid Elements</h1> <p> A Grid Layout must have a parent element with the <em>display</em> property set to <em>grid</em> or <em>inline-grid</em>.</p> <p> Direct child element(s) of the grid container automatically becomes grid items. </p> <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> </body>
HTML 요소는 display
속성이 grid
또는 inline-grid
로 설정되면 그리드 컨테이너가 됩니다.
<style> .grid-container { display: grid; grid-template-columns: auto auto auto; /* 3개의 컬럼(세로 열)을 만들고, 자동으로 3개의 로우(가로 행)가 생성 */ background-color: #2196F3; padding: 10px; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; } </style> </head> <body> <h1>The display Property:</h1> <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> <p> Set the <em>display</em> property to <em>grid</em> to make a block-level grid container. </p> </body>
<style> .grid-container { display: inline-grid; grid-template-columns: auto auto auto; /* 3개의 컬럼(세로 열)을 만들고, 자동으로 3개의 로우(가로 행)가 생성 */ background-color: #2196F3; padding: 10px; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; } </style> </head> <body> <h1>The display Property:</h1> <div class="grid-container"> <!-- .grid-item$*9 엔터 클릭하면 아래와 같이 --> <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> <p> Set the <em>display</em> property to <em>inline-grid</em> to make a block-level grid container. </p> </body>
그리드 아이템의 수직선(공간)은 컬럼(columns)라고 합니다.
ref : The source of this png file is CSS Grid Intro
그리드 아이템의 수평선(공간) 로우(rows)라고 합니다.
ref : The source of this png file is CSS Grid Intro
각각의 컬럼/로우 사이의 공간을 갭(gaps)이라고 합니다.
아래의 속성들을 사용하여 캡 사이즈를 조정할 수 있습니다.
grid-column-gap
grid-row-gap
grid-gap
grid-column-gap
속성은 컬럼(세로 열) 사이의 간격을 설정합니다.
<style> .grid-container { display: grid; grid-column-gap: 50px; grid-template-columns: auto auto auto; background-color: #2196F3; padding: 10px; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; } </style> </head> <body> <h1>The grid-column-gap Property:</h1> <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> <p>Use the <em>grid-column-gap</em> property to adjust the space between the columns.</p> </body>
grid-row-gap
속성은 로우(rows, 가로 행) 사이의 간격을 설정합니다.
<style> .grid-container { display: grid; grid-template-columns: auto auto auto; background-color: #2196f3; padding: 10px; grid-row-gap: 50px; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; } </style> </head> <body> <h1>The grid-row-gap Property:</h1> <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> <p>Use the <em>grid-row-gap</em> property to adjust the space between the rows.</p> </body>
grid-gap
속성은 grid-row-gap
및 grid-column-gap
속성에 대한 속기 속성(shorthand property)입니다.
<style> .grid-container { display: grid; grid-gap: 50px 100px; /* rows and columns in order */ grid-template-columns: auto auto auto; background-color: #2196F3; padding: 10px; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; } </style> </head> <body> <h1>The grid-gap Property:</h1> <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> <p>Use the <em>grid-gap</em> property to adjust the space between the columns <em>and</em>the rows.</p> </body>
grid-gap
속성을 사용하여 행 간격과 열 간격을 하나의 값으로 설정할 수도 있습니다:
<style> .grid-container { display: grid; grid-gap: 50px; /* one value for both rows and columns */ grid-template-columns: auto auto auto; background-color: #2196F3; padding: 10px; } .grid-item { background-color: rgba(255, 255, 255, 0.8); border: 1px solid rgba(0, 0, 0, 0.8); padding: 20px; font-size: 30px; text-align: center; } </style> </head> <body> <h1>The grid-gap Property:</h1> <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> <p>Use the <em>grid-gap</em> property to adjustthe space between the columns <em>and</em>the rows.</p> </body>
컬럼 라인 1에 그리드 아이템을 위치시키고, 컬럼 라인 3에서 종료하게 합니다.
<style> .grid-container { display: grid; grid-template-columns: auto auto auto; grid-gap: 10px; background-color: #2196F3; padding: 10px; } .grid-container > div { background-color: rgba(255, 255, 255, 0.8); text-align: center; padding: 20px 0; font-size: 30px; } .item1 { grid-column-start: 1; grid-column-end: 3; } </style> </head> <body> <h1>Grid Lines</h1> <div class="grid-container"> <div class="item1">1</div> <div class="item2">2</div> <div class="item3">3</div> <div class="item4">4</div> <div class="item5">5</div> <div class="item6">6</div> <div class="item7">7</div> <div class="item8">8</div> </div> <p>You can refer to line numbers when placing grid items.</p> </body>
로우 라인 1에 그리드 아이템을 위치시키고, 로우 라인 3에서 종료하게 합니다.
<style> .grid-container { display: grid; grid-template-columns: auto auto auto; grid-gap: 10px; background-color: #2196F3; padding: 10px; } .grid-container > div { background-color: rgba(255, 255, 255, 0.8); text-align: center; padding: 20px 0; font-size: 30px; } .item1 { grid-row-start: 1; grid-row-end:3; } </style> </head> <body> <h1>Grid Lines</h1> <div class="grid-container"> <div class="item1">1</div> <div class="item2">2</div> <div class="item3">3</div> <div class="item4">4</div> <div class="item5">5</div> <div class="item6">6</div> <div class="item7">7</div> <div class="item8">8</div> </div> <p>You can refer to line numbers when placing grid items.</p> </body>
Property | Description |
---|---|
column-gap | 컬럼(열) 사이의 간격을 지정합니다. |
gap | 행 간격 및 열 간격 속성에 대한 속기 속성 |
grid | grid-template-rows, grid-template-columns, grid-template-areas, grid-auto-rows, grid-auto-columns 및 grid-auto-flow 속성에 대한 속기 속성 |
grid-area | 그리드 아이템의 이름을 지정합니다. 즉 이 속성은 grid-row-start, grid-column-start, grid-row-end 및 grid-column-end 속성에 대한 속기 속성입니다. |
grid-auto-columns | 기본 컬럼 크기를 지정합니다. |
grid-auto-flow | 자동 배치된 항목이 그리드에 삽입되는 방법을 지정합니다. |
grid-auto-rows | 기본 행 크기를 지정합니다. |
grid-column | grid-column-start 및 grid-column-end 속성에 대한 속기 속성 |
grid-column-end | 그리드 아이템을 종료할 위치를 지정합니다. |
grid-column-gap | 컬럼 사이의 간격의 크기를 지정합니다. |
grid-column-start | 그리드 아이템을 시작할 위치를 지정합니다. |
grid-gap | grid-row-gap 및 grid-column-gap 속성에 대한 속기 속성 |
grid-row | grid-row-start 및 grid-row-end 속성에 대한 속기 속성 |
grid-row-end | 그리드 아이템을 종료할 위치를 지정합니다. |
grid-row-gap | 행 사이의 간격 크기를 지정합니다. |
grid-row-start | 그리드 아이템을 시작할 위치를 지정합니다. |
grid-template | grid-template-rows, grid-template-columns 및 grid-areas 속성에 대한 속기 속성 |
grid-template-areas | 명명된 그리드 아이템을 사용하여, 열과 행을 표시하는 방법을 지정합니다. |
grid-template-columns | 열의 크기와 그리드 레이아웃의 열 수를 지정합니다. |
grid-template-rows | 그리드 레이아웃의 행 크기를 지정합니다. |
row-gap | 그리드 행 사이의 간격을 지정합니다. |