๋ณต์กํ ๋ ์ด์์์ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์๋ 2์ฐจ์ ๋ ์ด์์ ๋ชจ๋ธ.
๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์น ํ์ด์ง์ ๋ ์ด์์์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ฑํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ๋ก, ์์๋ค์ ํ๊ณผ ์ด์ ๊ทธ๋ฆฌ๋๋ก ์ ๋ ฌํ ์ ์๋ค.
๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋๊ฐ ๋ ์์(๋ถ๋ชจ)์ display: grid; ์์ฑ ์ถ๊ฐ
๊ตฌ์ฑ : Grid-container(๋ถ๋ชจ์์) & Grid items(์์์์)
Grid Line (๋ผ์ธ)
: ๊ทธ๋ฆฌ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ถํ ์
Grid Cell (์
)
: ๊ทธ๋ฆฌ๋ ๊ตฌ์ฑ ๋จ์
Grid Track (ํธ๋)
: ๋ ๊ทธ๋ฆฌ๋ ๋ผ์ธ ์ฌ์ด์ ๊ณต๊ฐ. ์ด ๋๋ ํ
Grid Area (์์ญ)
: ๋ค ๊ฐ์ ๊ทธ๋ฆฌ๋ ๋ผ์ธ์ผ๋ก ๋๋ฌ์ธ์ธ ๊ณต๊ฐ (๊ทธ๋ฆฌ๋ ์
๋ก ๊ตฌ์ฑ๋จ)
์์ฑ | ์๋ฏธ |
---|---|
display | container ์ ์ |
grid-template-rows | ํ ํฌ๊ธฐ๋ฅผ ์ ์ |
grid-template-columns | ์ด ํฌ๊ธฐ๋ฅผ ์ ์ |
grid-template-areas | ์์ญ ์ด๋ฆ์ ์ฐธ์กฐํด ํ ํ๋ฆฟ ์์ฑ |
grid-template | grid-template-xxx์ ๋จ์ถ |
row-gap(grid-row-gap) | ํ๊ณผ ํ ์ฌ์ด ๊ฐ๊ฒฉ ์ ์ |
column-gap(grid-column-gap) | ์ด๊ณผ ์ด ์ฌ์ด ๊ฐ๊ฒฉ ์ ์ |
gap(grid-gap) | xxx-gap์ ๋จ์ถ |
grid-auto-rows | ์์์ ์ธ ํ ํฌ๊ธฐ ์ ์ |
grid-auto-columns | ์์์ ์ธ ์ด ํฌ๊ธฐ ์ ์ |
grid-auto-flow | ์๋ ๋ฐฐ์น ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ์์ ์ ์ |
grid | grid-template-xxx๊ณผ grid-auto-xxx์ ๋จ์ถ |
align-content | contents๋ฅผ ์์ง(์ด์ถ) ์ ๋ ฌ |
justify-content | contents๋ฅผ ์ํ(ํ์ถ) ์ ๋ ฌ |
place-content | align-content์ justify-content์ ๋จ์ถ |
align-items | items๋ค์ ์์ง(์ด์ถ) ์ ๋ ฌ |
justify-items | items๋ค์ ์ํ(ํ์ถ) ์ ๋ ฌ |
place-items | align-items์ justify-items์ ๋จ์ถ |
ex) ์ฌ์ฉ ์์
.container {
display: grid;
grid-template-rows: 100px 100px;
grid-template-columns: 1fr 2fr;
grid-gap: 10px;
}
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
<!-- ๋ ๊ฐ์ ํ๊ณผ ๋ ๊ฐ์ ์ด์ด ์๋ ๊ทธ๋ฆฌ๋๋ฅผ ์์ฑํ๊ณ ,
๊ฐ ํ์ ๋์ด๋ 100px, ์ฒซ ๋ฒ์งธ ์ด์ 1fr(1:1 ๋น์จ),
๋ ๋ฒ์งธ ์ด์ 2fr(2:1 ๋น์จ), ์์ดํ
๊ฐ์ ๊ฐ๊ฒฉ์ 10px ์ค์ -->
*display: grid
: ๊ทธ๋ฆฌ๋ ์ปจํ
์ด๋๋ฅผ ์์ฑ
*grid-template-rows
: ๊ทธ๋ฆฌ๋์ ํ ํฌ๊ธฐ๋ฅผ ์ ์
*grid-template-columns
: ๊ทธ๋ฆฌ๋์ ์ด ํฌ๊ธฐ๋ฅผ ์ ์
*grid-gap
: ๊ทธ๋ฆฌ๋ ์์ดํ
์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ ์
๐ fr(fraction, ๊ณต๊ฐ ๋น์จ) ๋จ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๐ repeat() ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
grid-template-columns: repeat(9, 100px);
/* grid-template-columns: 100px 100px 100px 100px 100px 100px 100px 100px 100px; */
grid-template-columns: repeat(2, 100px 200px 50px);
/* grid-template-columns: 100px 200px 50px 100px 200px 50px; */
grid-template-columns: repeat(4, 1fr 2fr 3fr);
/* grid-template-columns: 1fr 2fr 3fr 1fr 2fr 3fr 1fr 2fr 3fr 1fr 2fr 3fr; */
grid-template-rows: repeat(3, minmax(100px, auto));
๋ด์ฉ์ ์๊ณผ ์๊ด์์ด ์ต์ํ 100px,ย ์ต๋๋ ์๋์ผ๋ก(auto) ๋์ด๋๊ฒ ์ค์
<!-- min ๊ณผ max ๋ฐ๋ก๋ฐ๋ก ์ง์ ๊ฐ๋ฅโ -->
grid-template-columns: min-content 1fr;
grid-template-columns: max-content 1fr;
์ง์ ๋ ์์ญ์ ์์ญ ์ด๋ฆ์ ์ฐธ์กฐํด ํ ํ๋ฆฟ ์์ฑ
.container {
display: grid;
/* ๊ทธ๋ฆฌ๋ ๊ฐฏ์,ํฌ๊ธฐ ์กฐ์ */
grid-template-rows: repeat(2, 100px);
grid-template-columns: repeat(3, 1fr);
/* ๊ทธ๋ฆฌ๋ ํ
ํ๋ฆฟ */
grid-template-areas:
"a a a"
"b b c";
/* ๋น์์ญ : none ๋๋ .(๋ง์นจํ) */
}
/* grid-area ์ด๋ฆ์ ์ง์ */
header { grid-area: a; }
main { grid-area: b; }
aside { grid-area: c; }
*grid-template
์ผ๋ก ๋จ์ถํด์ ์ธ ์ ์๋ค.
grid-template:
"a a a" 100px
"b b c" 100px
/ 1fr 1fr 1fr;
์์ฑ | ์๋ฏธ |
---|---|
grid-row-start | Item ํ ์์ ์์น ์ง์ |
grid-row-end | Item ํ ๋ ์์น ์ง์ |
grid-row | grid-row-xxx์ ๋จ์ถ |
grid-column-start | Item ์ด ์์ ์์น ์ง์ |
grid-column-end | Item ์ด ๋ ์์น ์ง์ |
grid-column | grid-column-xxx์ ๋จ์ถ |
grid-area | ์์ญ์ด๋ฆ ์ค์ ๋๋ grid-row์ grid-column์ ๋จ์ถ |
align-self | ๋จ์ผ item ์์ง(์ด์ถ) ์ ๋ ฌ |
justify-self | ๋จ์ผ item ์ํ(ํ์ถ) ์ ๋ ฌ |
place-self | align-self์ justify-self์ ๋จ์ถ |
order | item ๋ฐฐ์น ์์ ์ง์ |
z-index | item ์์ด๋ ์์ ์ง์ |
item ๋ฐฐ์น๋ฅผ ์ํด ๊ทธ๋ฆฌ๋ ์ ์ ์์ ์์น
์ ๋ ์์น
๋ฅผ ์ง์ ํ๋ค.
โ์ซ์โ๋ฅผ ์ง์ ํ๊ฑฐ๋, โ์ ์ด๋ฆโ์ ์ง์ ํ๊ฑฐ๋, span ํค์๋๋ฅผ ์ฌ์ฉ
1. *์ซ์ ์ง์
/* ๊ทธ๋ฆฌ๋ ๋ชจ์ ์ง์ */
.container {
display: grid;
grid-template-rows: repeat(2, 1fr);
grid-template-columns: repeat(3, 1fr);
}
/* ๊ทธ๋ฆฌ๋ ์ปจํ
์ด๋ ๋ด์ ๊ทธ๋ฆฌ๋ ์์ดํ
๋ค์ ์ง์ */
.item:first-child {
grid-row-start: 1;
grid-row-end: 3;
grid-column-start: 2;
grid-column-end: 4;
}
2. ์ ์ด๋ฆ ์ง์
.container {
display: grid;
grid-template-rows: [row-1st] 1fr [row-2nd] 1fr [row-3rd]; /* ์ ์ด๋ฆ์ ์ง์ */
grid-template-columns: [col-1st] 1fr [col-2nd] 1fr [col-3rd] 1fr [col-4th];
}
.item:first-child {
grid-row-start: row-2nd; /* ์ ์ด๋ฆ์ผ๋ก ์์ดํ
ํฌ๊ธฐ๋ฅผ ์ง์ */
grid-row-end: row-3rd;
grid-column-start: col-2nd;
grid-column-end: col-4th;
}
3. span ์ฌ์ฉ
.item:first-child{
/* Row 2๋ฒ์์ 3๋ฒ๊น์ง */
grid-row-start: 2;
grid-row-end: span 1;
/* Column 2๋ฒ์์ 4๋ฒ๊น์ง */
grid-column-start: 2;
grid-column-end: span 2;
}