์ด๋ฆ์ด ์๋ ์กฐ๊ฑด
๋ชจ๋ ํ๋ฆฌ์ ๋ฏธ๋์ด ๋ฐ ์ปจํ ์ด๋ ์กฐ๊ฑด๊ณผ ํ์ฅ๋ ์ฟผ๋ฆฌ, ๊ฐ๊ฐ ์ธก์ ํ๋ ๋ฒ์์ ๋๋ค.
์ด ํ์ด์ง์ ๋ด์ฉ
ํ๋ฆฌ์
์ ๋
๋ฆฝ์ ์ธ ๋ฏธ๋์ด ์กฐ๊ฑด๊ณผ ์ปจํ
์ด๋ ์กฐ๊ฑด์ ์ ์ํฉ๋๋ค. ์งง์ ์ด๋ฆ์ ๊ณต์ ํ์ง๋ง ๋ ๋ฑ๋ก ๋ชฉ๋ก ๋ชจ๋ ํ
๋ง ํ ํฐ ์งํฉ์ ์๋๋๋ค. ๋จ๋
@md๋ ๋ทฐํฌํธ๋ฅผ ์ฟผ๋ฆฌํ๊ณ @container(--md)๋ ์๊ฒฉ์ ๊ฐ์ถ ์์ ์ปจํ
์ด๋๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค.
๋ฏธ๋์ด ์กฐ๊ฑด
๋ฏธ๋์ด ์ด๋ฆ์ media.css์์ ๊ฐ์ ธ์ต๋๋ค. ๋๋น ์กฐ๊ฑด์ ์์ฑ๋ rem ๊ฐ์ ์ฌ์ฉํ๊ณ ๋ฐฉํฅ ๋ฐ ํ๊ฒฝ์ค์ ์กฐ๊ฑด์ ๋ค์ดํฐ๋ธ ๋ฏธ๋์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค. @dark์ @light๋ ์๋์ผ๋ก ๊ณ ๋ฅธ ์ฌ์ดํธ ํ
๋ง๊ฐ ์๋๋ผ ์์คํ
ํ๊ฒฝ์ค์ ์ ํ์ธํฉ๋๋ค.
์ต์ ๋ทฐํฌํธ ๋๋น
| ์ ๋ฏธ์ฌ | ํ์ฅ๋ ์ฟผ๋ฆฌ |
|---|---|
@4xs | (width >= 22.5rem) |
@3xs | (width >= 30rem) |
@2xs | (width >= 37.5rem) |
@xs | (width >= 48rem) |
@sm | (width >= 52.125rem) |
@md | (width >= 64rem) |
@lg | (width >= 80rem) |
@xl | (width >= 90rem) |
@2xl | (width >= 100rem) |
@3xl | (width >= 120rem) |
@4xl | (width >= 160rem) |
์ง์ ๋๋น ๋ฏธ๋ง์ ๋ทฐํฌํธ
| ์ ๋ฏธ์ฌ | ํ์ฅ๋ ์ฟผ๋ฆฌ |
|---|---|
@max-4xs | not (width >= 22.5rem) |
@max-3xs | not (width >= 30rem) |
@max-2xs | not (width >= 37.5rem) |
@max-xs | not (width >= 48rem) |
@max-sm | not (width >= 52.125rem) |
@max-md | not (width >= 64rem) |
@max-lg | not (width >= 80rem) |
@max-xl | not (width >= 90rem) |
@max-2xl | not (width >= 100rem) |
@max-3xl | not (width >= 120rem) |
@max-4xl | not (width >= 160rem) |
๋ฐฉํฅ๊ณผ ํ๊ฒฝ์ค์
| ์ ๋ฏธ์ฌ | ํ์ฅ๋ ์ฟผ๋ฆฌ |
|---|---|
@dark | (prefers-color-scheme: dark) |
@landscape | (orientation: landscape) |
@light | (prefers-color-scheme: light) |
@motion-reduce | (prefers-reduced-motion: reduce) |
@motion-safe | (prefers-reduced-motion: no-preference) |
@portrait | (orientation: portrait) |
์ปจํ ์ด๋ ์กฐ๊ฑด
์ปจํ
์ด๋ ์ด๋ฆ์ container.css์์ ๊ฐ์ ธ์ต๋๋ค. ์ ์๋ ์ฟผ๋ฆฌ ์กฐ๊ฑด๋ง ์ ๊ณตํฉ๋๋ค. @container(--md)๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ๊ฒฉ ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ๊ณ @container(card|--md)๋ ์ด๋ฆ์ด card์ธ ์ ๊ฒฉ ์ปจํ
์ด๋๋ฅผ ์ ํํฉ๋๋ค. ๋ ํ์ ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
์ต์ ์ปจํ ์ด๋ ๋๋น
| ์ ๋ฏธ์ฌ | ํ์ฅ๋ ์ฟผ๋ฆฌ |
|---|---|
@container(--3xs) | (width >= 16rem) |
@container(--2xs) | (width >= 18rem) |
@container(--xs) | (width >= 20rem) |
@container(--sm) | (width >= 24rem) |
@container(--md) | (width >= 28rem) |
@container(--lg) | (width >= 32rem) |
@container(--xl) | (width >= 36rem) |
@container(--2xl) | (width >= 42rem) |
@container(--3xl) | (width >= 48rem) |
@container(--4xl) | (width >= 56rem) |
@container(--5xl) | (width >= 64rem) |
@container(--6xl) | (width >= 72rem) |
@container(--7xl) | (width >= 80rem) |
์ง์ ๋๋น ๋ฏธ๋ง์ ์ปจํ ์ด๋
| ์ ๋ฏธ์ฌ | ํ์ฅ๋ ์ฟผ๋ฆฌ |
|---|---|
@container(--max-3xs) | not (width >= 16rem) |
@container(--max-2xs) | not (width >= 18rem) |
@container(--max-xs) | not (width >= 20rem) |
@container(--max-sm) | not (width >= 24rem) |
@container(--max-md) | not (width >= 28rem) |
@container(--max-lg) | not (width >= 32rem) |
@container(--max-xl) | not (width >= 36rem) |
@container(--max-2xl) | not (width >= 42rem) |
@container(--max-3xl) | not (width >= 48rem) |
@container(--max-4xl) | not (width >= 56rem) |
@container(--max-5xl) | not (width >= 64rem) |
@container(--max-6xl) | not (width >= 72rem) |
@container(--max-7xl) | not (width >= 80rem) |
๊ฐ ํ๋ฆฌ์
max- ์กฐ๊ฑด์ ๋์ํ๋ ์ต์ ์กฐ๊ฑด์ ์ฌ์งํฉ์
๋๋ค. ์๋ ํ์ฅ ์ฟผ๋ฆฌ๋ ๊ฒฝ๊ณ์์ ๊ฒน์น์ง ์์ต๋๋ค. ์๋ณธ ์ ์๋ not (--name)์ผ๋ก ๋์ํ๋ ์ด๋ฆ์ ์ฐธ์กฐํฉ๋๋ค.
๊ฐ์ ์ด๋ฆ, ๋ค๋ฅธ ๋ฒ์
๊ฐ์ ํค๊ฐ ์๋ก ๋ค๋ฅธ ์ฟผ๋ฆฌ ์์ญ์์ ๋ค๋ฅธ ์๊ณ๊ฐ์ ๋ํ๋ผ ์ ์์ต๋๋ค. --container-md ๊ฐ์ ์ปจํ
์ด๋ ํฌ๊ธฐ ํ ํฐ์ ์ธ ๋ฒ์งธ ๋
๋ฆฝ ์ญํ ๋ก, ํฌ๊ธฐ ์ ํธ๋ฆฌํฐ์ ๊ธธ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฐ์ ์ด๋ฆ์ผ๋ก ์๋ก ๋ค๋ฅธ ๊ฒฝ๊ณ๋ฅผ ์ธก์ ํฉ๋๋ค
ํ๋ฆฌ์ @md ์๊ณ๊ฐ์ 64rem์ด๊ณ @container(--md)๋ 28rem์ ๋๋ค. ๋ ๋ค md๋ผ๋ ์ด๋ฆ์ ์ฐ์ง๋ง ์ด ๋ ๋ฆฝ์ ์ธ ์ ์๋ค์ ์๋ก ๋ค๋ฅธ ๊ฒฝ๊ณ๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค.
ํ ์คํธ ์ค๋ช
- ๋ฐ๊นฅ ๊ฒฝ๊ณ๋ ํ๋ฆฌ์ @md ์ต์ ๋๋น์ธ 64rem์ ๋ทฐํฌํธ๋ฅผ ๋ํ๋ ๋๋ค.
- ์์ชฝ ๊ฒฝ๊ณ๋ ๋ ๋ฆฝ์ ์ธ @container(--md) ์ต์ ๋๋น์ธ 28rem์ ์ฟผ๋ฆฌ ์ปจํ ์ด๋๋ฅผ ๋ํ๋ ๋๋ค. ์ฟผ๋ฆฌ ๋์ ์์๋ ์ด ์ปจํ ์ด๋ ์์ ์์ต๋๋ค.
- ๋ ๋๋น๋ ๊ฐ์ ์ฒ๋๋ก ๊ทธ๋ ธ์ผ๋ฉฐ ์ด๊ธฐ ๊ธ๊ผด ํฌ๊ธฐ์ ๋ฃจํธ ๊ธ๊ผด ํฌ๊ธฐ๋ ๋ชจ๋ 16px์ ๋๋ค. ์ปจํ ์ด๋ ํฌ๊ธฐ ํ ํฐ์ ๋ฐ๊ฟ๋ ๋ ์กฐ๊ฑด ์ ์๋ ๋ฐ๋์ง ์์ต๋๋ค.
์ฌ์ฉ ์
์ด ๋ ์ด์์์ ํ๋ฆฌ์ md ๋ทฐํฌํธ ์๊ณ๊ฐ ๋ฏธ๋ง์์ ํ ์ด์ ์ฌ์ฉํ๊ณ ์๊ณ๊ฐ๋ถํฐ ์ธ ์ด์ ์ฌ์ฉํฉ๋๋ค.
<div class="โฆ grid-cols(1) grid-cols(3)@md"> <div>Notes</div> <div>Drafts</div> <div>Archive</div></div>์์ฑ๋ CSS
@layer utilities { .grid-cols\(1\) { display: grid; grid-template-columns: repeat(1, minmax(0, 1fr)) } @media (width >= 64rem) { .grid-cols\(3\)\@md { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) } }}์ฌ์ฉ์ ์ ์
๋ทฐํฌํธ๋ ํ๊ฒฝ์ค์ ์ฟผ๋ฆฌ์๋ ์ฌ์ฉ์ ์ง์ ๋ฏธ๋์ด ์ด๋ฆ์, ์ปดํฌ๋ํธ ์ฟผ๋ฆฌ์๋ ์ฌ์ฉ์ ์ง์ ์ปจํ ์ด๋ ์ด๋ฆ์ ์ ์ธํ์ธ์. ๋ค์ดํฐ๋ธ ๋จ์๋ ์ ์ง๋ฉ๋๋ค. ์ด๋ฏธ ์ปดํ์ผ๋ manifest์์ ์กฐ๊ฑด์ ๋์ฒดํ ๋ ๋ ์๊ณ๊ฐ์ ๋ชจ๋ ๋ฐ๊พธ๋ ค๋ฉด ์๋ณด ์กฐ๊ฑด๋ ๋ค์ ์ ์ธํ์ธ์.
@custom-media --tablet (width >= 48rem);@custom-container --wide-card (width >= 30rem);<aside class="(container-name:card) container-inline"> <div class="grid-cols(1) grid-cols(2)@container(card|--wide-card)">Card content</div></aside><div class="grid-cols(1) grid-cols(3)@tablet">Page content</div>์์ฑ๋ CSS
@layer utilities { .grid-cols\(1\) { display: grid; grid-template-columns: repeat(1, minmax(0, 1fr)) } .container-inline { container-type: inline-size } .\(container-name\:card\) { container-name: card } @container card (width >= 30rem) { .grid-cols\(2\)\@container\(card\|--wide-card\) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)) } } @media (width >= 48rem) { .grid-cols\(3\)\@tablet { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) } }}๊ด๋ จ ๋ฌธ์: ์กฐ๊ฑด ๋ฌธ๋ฒ, ์กฐ๊ฑด ์ ์ ๋ฒ์, ์ฟผ๋ฆฌ ์ ์, ์ปจํ ์ด๋ ํฌ๊ธฐ ํ ํฐ , ๋ฐ์ํ ๋์์ธ.

