๋ฐ์ํ ๋ ์ด์์์ ์ ์ํ ๋, grid-template-columns์ repeat() ํจ์์ ๋ ์์ฑ๊ฐ auto-fill๊ณผ auto-fit์ ์ฐจ์ด์ .
repeat() ํจ์
๋ง์ผ, ์นผ๋ผ 12๊ฐ๋ฅผ ๋ฐ๋ณตํ๋ค๊ณ ํ๋ฉด, ์ฐ๋ฆฌ๋ ๋ช ์์ ์ผ๋ก repeat() ํจ์์์ ๊ทธ ๊ฐ์ ์ ์ด์ค ์ ์๋ค.
.grid {
display: grid;
/* define the number of grid columns */
grid-template-columns: repeat(12, 1fr);
column-gap: 12px;
row-gap: 8px;
}
์ด ๊ฐ๋ก ๋จ ์์์ ์นผ๋ผ 12๊ฐ๊ฐ ๋ฏธ๋ฆฌ ์ง์ ํด์ค row-gap, column-gap ๊ฐ์ ์ ์งํ๋ฉฐ ์ ๋ ฌ๋์ด ์๋ค.
๋ธ๋ผ์ฐ์ ์๊ฒ ๊ฐ row์ ์ปฌ๋ผ 12๊ฐ๋ฅผ ์ ๋ ฌํ๋ผ๊ณ ํ์ผ๋ฏ๋ก, ํ๋ฉด ํฌ๊ธฐ๋ฅผ ๋๋ ธ์ ๋๋ ์ค์์ ๋๋ ๋ฌด๊ดํ๊ฒ ๋์ผํ๊ฒ ์ ๋ ฌ๋์ด ์๋ค.
ํ์ง๋ง ์ปจํ ์ธ ๊ฐ ๋๋ฌด ๋ง์ด ๋ชฐ๋ ค ์์ ๊ฒฝ์ฐ, ๊ฐ ์ปฌ๋ผ์ด ๋ชจ์์ ์๊ณ squeezed ๋์ด ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ฏ๋ก, minmax() ๋ผ๋ ํจ์๋ฅผ ์จ์ ๊ฐ ์ปฌ๋ผ์ ๊ณ ์ ๋ ๋๋น๊ฐ์ ๋ถ์ฌํ์.
.grid {
display: grid;
grid-template-columns: repeat(12, minmax(150px, 1fr));
column-gap: 12px;
row-gap: 8px;
}
์ด์ ์ปจํ ์ธ ๋ ๊ณ ์ ๋ minmax ๊ฐ์ ๊ฐ๊ฒ ๋์๊ณ , 12๊ฐ์ ์นผ๋ผ์ ๋ชจ๋ ํํํด์ฃผ๋ค๋ณด๋ ๊ฐ๋ก๋ก ์คํฌ๋กค ๋ฐ๊ฐ ์๊ฒผ๋ค. ๋ณดํต์ ์์ ๋กญ๊ฒ ๋ณ๋ํ๋ ํ๋ฉด ๋๋น์ ๋ง๊ฒ overflow๋ ์ปฌ๋ผ๋ค์ ์๋กญ๊ฒ ์๋ซ๋จ์ผ๋ก wrap๋๋ ํธ์ด ํ๋ฒํ๋ค. ๋ธ๋ผ์ฐ์ ์๊ฒ 12๊ฐ์ ์ปฌ๋ผ์ (ํ ์ค์) repeatํ๋ผ๋ ๋ช ๋ น์ ์ฒ ํํ ํ, ์ด ์๋ฆฌ์ auto-fit์ด๋ auto-fill ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค.
auto-fill๊ณผ auto-fit์ ์ข ์ข ๋์ผํ ๊ฒฐ๊ณผ๊ฐ์ ๋ณด์ฌ์ฃผ๊ธฐ๋ ํ์ง๋ง, ์ด๋๊น์ง๋ ํน์ viewport width ์๋์์ ๊ทธ๋ ๊ฒ ๋ณด์ด๋ ๊ฒ์ผ ๋ฟ์ด๋ค. ๋ ์ฐจ์ด๋ ๋ฏธ๋ฌํ์ง๋ง ๋ช ๋ฐฑํ ๋ค๋ฅธ ์ง์ ์ด ์๋ค.
.grid {
display: grid;
column-gap: 12px;
row-gap: 8px;
}
.fill {
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
}
.fit {
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
์ฆ, auto-fit์ ์๋ก์ด ์ปฌ๋ผ์ด ๋ค์ด์ฌ ์ฌ์ง๋ฅผ ๋จ๊ฒจ๋์ง ์๊ณ ํ์ฌ availableํ grid-item์ ๋ํด์๋ง ์ ๊ฒฝ ์ฐ๋ฉฐ ๋ชจ๋ fit๋๊ฒ ์ ๋ ฌํ์ง๋ง, auto-fill์ ๊ฒฝ์ฐ ๋๋๋ก ๋ง์ ์ปฌ๋ผ๋ค์ ์ ๋ ฌํ์ ๋์ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํ๋ฉฐ, ๋น ๊ฐ์ ์์ ํ๋ค.
์ด๋ฐ ๋ฏธ๋ฌํ ์ฐจ์ด๋ ํ๋ฉด์ด ์ถฉ๋ถํ ๋์์ ๋ ๋๋ฌ๋์ง๋ง, ์ค์ด๋ค ๋๋ ํ๋ฒํ๊ฒ ๊ฐ ์ปฌ๋ผ์ด ์๋๋ก wrap๋๋ฉฐ, ๋จ์ด์ง ๊ฒ์ด๋ฏ๋ก ์ฐจ์ด์ ์ด ์ ๋ณด์ด์ง ์์ ๊ฒ์ด๋ค.
์ฐธ๊ณ
css-tricks.com/auto-sizing-columns-css-grid-auto-fill-vs-auto-fit/
'๐ฉโ๐ป > CSS3' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] ์์๋ฅผ fadeoutํ ๋ค์๋ ์ฌ์ ํ clickableํ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ (0) | 2021.03.06 |
---|---|
[CSS] Attribute Selector (0) | 2021.03.06 |
[responsive-web] px, em, rem๋จ์๋ฅผ ์ ์ฌ์ ์์ ์ฐ๊ธฐ (0) | 2021.01.06 |
[interactive-web] will-change (0) | 2021.01.06 |
HTTP/1๊ณผ HTTP/2์ ๋น๊ต ๊ทธ๋ฆฌ๊ณ CSS ์คํ๋ผ์ดํธ(Sprite) ๊ธฐ๋ฒ์ ์ ํจ์ฑ (0) | 2020.10.27 |