Flex์ ๋ค๋ฅด๊ฒ ๋ ๋ฐฉํฅ ๋ ์ด์์ ์์คํ ์ด๋ค.
display: grid;
๋ฅผ ์ ์ธํ ํ๊ทธ๋ฅผ ์๋ฏธํ๋ค.
Grid Container
์ ์์ ํ๊ทธ๋ค์ ์๋ฏธํ๋ค.
Grid Container
์์ ์ ์ํด์ฃผ๋ฉฐ Grid Track
์ ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ฃผ๋ ์์ฑ์ด๋ค.
์ฆ, Grid Item
์ ํฌ๊ธฐ๋ฅผ ์ ์ํ๋ ๊ฒ์ด๋ค.
grid-template-columns
๋ ๊ทธ๋ฆฌ๋ ์์ดํ
์ ๊ฐ๋ก๋ฐฉํฅ ๋ฐฐ์น๋ฅผ ๊ฒฐ์ ํ๋ค.grid-template-rows
๋ ๊ทธ๋ฆฌ๋ ์์ดํ
์ ์ธ๋ก๋ฐฉํฅ ๋ฐฐ์น๋ฅผ ๊ฒฐ์ ํ๋ค..grid-container {
display: grid;
/* ๊ฐ๋ก๋ก 3๊ฐ 200px, 500px, 300px ์์ญ๋งํผ ์ฐจ์งํ๋๋ก ๋ฐฐ์น */
grid-template-columns: 200px 500px 300px;
/* ๊ฐ๋ก๋ก 3๊ฐ ๊ฐ์ ์์ญ๋งํผ ๋๋ ์ ๋ฐฐ์น ( ์๋ ๋ ๊ฐ๋ ์๋ฒฝํ ๋์ผ ) */
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: repeat(3, 1fr);
/* ๊ฐ๋ก๋ก 3๊ฐ ์ต์ 100px, ์ต๋ auto ๋ฐฐ์น */
grid-template-columns: repeat(3, minmax(100px, auto));
}
๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ก๋ ์ธ๋ก๋ ๊ทธ๋ฆฌ๋ ์์ดํ ์ ๊ฐ๋ ์ฑ์ด๋ค.( = ์ ์ฐํ๊ฒ ๋๋ฆฐ๋ค. )
repeat()
์ ์ฌ์ฉํ๋ฉฐ ๋ฐ๋ณตํ ํ์๋ฅผ ๋ฏธ๋ฆฌ ์ง์ ํ์ง ์๊ณ ํฌ๊ธฐ์ ๋ง๊ฒ ๋ฐ๋ณตํ๊ฒ ํด์ฃผ๋ ๊ฐ์ด๋ค.
auto-fill
์ ๋จ์ columns๋ฅผ ์ฑ์ฐ์ง ์๊ณ ๋จ๊ฒจ๋๋ ๋ฐ๋ฉด
auto-fit
์ ๊ฐ์ ๋ผ์ธ์ Grid Item
์ ๋ฐฐ์นํ๊ณ ๋จ์ ๊ณต๊ฐ์ ๊ฐ์ ๋น์จ๋ก ๋๋ ๊ฐ์ง๋ค.
.grid-container {
display: grid;
/* ๊ฐ๋ก์ ๊ทธ๋ฆฌ๋ ์์ดํ
์ด 200px์ด ๋ค์ด๊ฐ ์ ์๋ ๋งํผ๋ง ์ฑ์ */
grid-template-columns: repeat(auto-fill, minmax(200px, auto));
/* ๊ฐ๋ก์ ๊ทธ๋ฆฌ๋ ์์ดํ
์ด 20%๊ฐ ๋ค์ด๊ฐ ์ ์๋ ๋งํผ๋ง ์ฑ์ */
/* ์ฆ, ๊ฐ๋ก์ 5๊ฐ์ฉ ๋ค์ด๊ฐ๋ฉด์ ํฌ๊ธฐ๋ ๋์ผํ ๋น์จ๋ก ๋๋ ๊ฐ์ง */
grid-template-columns: repeat(auto-fill, minmax(20%, auto));
}
row-gap
, column-gap
, gap
์ด ์กด์ฌํ๋ค.
ํต์ ๋ฅผ ๋ฒ์ด๋ Grid Track
์ ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ฃผ๋ ์์ฑ์ด๋ค.
.grid-container {
display: grid;
/* ์ด 3๊ฐ์ ๋ผ์ธ์ ๊ฐ์ ํฌ๊ธฐ๋ก ๋ฐฐ์นํจ */
/* 3์ค ์ด๊ณผ์ผ ๊ฒฝ์ฐ ์ฆ, 4๋ฒ์งธ ๋ผ์ธ๋ถํฐ๋ "ํต์ ๋ฅผ ๋ฒ์ด๋"๋ผ์ธ์ด ๋๊ณ , ํฌ๊ธฐ๊ฐ auto๊ฐ์ด ๋๋ค. */
grid-template-rows: repeat(3, 1fr);
/* ์ฃผ์ด์ง ๋ชจ๋ ๋ผ์ธ์ ์ ํด์ง ํฌ๊ธฐ๋ก ๋ฐฐ์นํจ */
grid-auto-rows: 300px;
grid-auto-rows: 1fr;
grid-auto-rows: minmax(100px, auto);
}
ํต์ ๋ฅผ ๋ฒ์ด๋์ด๋
grid-template-*
์ ์ ์ฉํ์ง ์์ ๊ทธ๋ฆฌ๋ ์์ดํ ์ ๋งํ๋ค.
๊ทธ๋ฆฌ๋ ์์ดํ ์ด ์ฐจ์งํ ์์ญ์ ์ง์ ํ๋ ์์ฑ์ด๋ค.
.grid-container {
display: grid;
grid-template-rows: repeat(3, 1fr);
}
.grid-item:nth-child(1) {
/* ์๋ 3๊ฐ์ง๋ ๋ชจ๋ ๋์ผํ๊ฒ ๋์ */
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 3;
grid-column: 1 / 3;
grid-row: 1 / 3;
grid-column: 1 / span 2;
grid-row: 1 / span 2;
/* ๋ณธ๋ ์์น์์ ์์ํ๋ค๋ฉด ์์์ auto๋ก ๋์ฒด ๊ฐ๋ฅ */
grid-row: auto / span 2;
}
Grid Item
์ ๋ฐฐ์น ์์๋ ๋น์นธ์ ์ฑ์๋ฃ์์ง๋ฅผ ์ง์ ํ๋ค.
row
, column
, dense
, row dence
, column dence
๊ฐ ์กด์ฌํ๋ค.
Grid Item
๋ค์ ๋ฐฐ์น๋ฅผ ์ ํ๋ค.
justify-items
(๊ฐ๋ก๋ฐฉํฅ), align-items
(์ธ๋ก๋ฐฉํฅ), place-items
๊ฐ ์กด์ฌํ๋ค.
Grid Item
๋ค ์ ์ฒด๋ฅผ ํ๋ฒ์ ๋ฐฐ์นํ๋ค.
justify-content
(๊ฐ๋ก๋ฐฉํฅ), align-content
(์ธ๋ก๋ฐฉํฅ), place-content
๊ฐ ์กด์ฌํ๋ค.
Grid Item
๊ฐ๊ฐ์ ๊ฐ ๊ณต๊ฐ์์์ ๋ฐฐ์น๋ฅผ ์ง์ ํ๋ค.
justify-self
, align-self
, place-self
๊ฐ ์กด์ฌํ๋ค.
Grid Track
: Grid์ rows์ column์ ์๋ฏธfr
: ๋น์จ์ ์๋ฏธrepeat()
: ๋ฐ๋ณต์ ์๋ฏธ => repeat(4, 1fr)
minmax()
: ์ต์, ์ต๋๊ฐ ์ง์ => minmax(100px, auto)