ํƒ์ƒ‰

๋ฌธ๋ฒ•

์ด๋ฆ„์ด ์žˆ๋Š” ์กฐ๊ฑด

๋ชจ๋“  ํ”„๋ฆฌ์…‹ ๋ฏธ๋””์–ด ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์กฐ๊ฑด๊ณผ ํ™•์žฅ๋œ ์ฟผ๋ฆฌ, ๊ฐ๊ฐ ์ธก์ •ํ•˜๋Š” ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

ํ”„๋ฆฌ์…‹์€ ๋…๋ฆฝ์ ์ธ ๋ฏธ๋””์–ด ์กฐ๊ฑด๊ณผ ์ปจํ…Œ์ด๋„ˆ ์กฐ๊ฑด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์งง์€ ์ด๋ฆ„์„ ๊ณต์œ ํ•˜์ง€๋งŒ ๋‘ ๋“ฑ๋ก ๋ชฉ๋ก ๋ชจ๋‘ ํ…Œ๋งˆ ํ† ํฐ ์ง‘ํ•ฉ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹จ๋… @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-4xsnot (width >= 22.5rem)
@max-3xsnot (width >= 30rem)
@max-2xsnot (width >= 37.5rem)
@max-xsnot (width >= 48rem)
@max-smnot (width >= 52.125rem)
@max-mdnot (width >= 64rem)
@max-lgnot (width >= 80rem)
@max-xlnot (width >= 90rem)
@max-2xlnot (width >= 100rem)
@max-3xlnot (width >= 120rem)
@max-4xlnot (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๋ผ๋Š” ์ด๋ฆ„์„ ์“ฐ์ง€๋งŒ ์ด ๋…๋ฆฝ์ ์ธ ์ •์˜๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ๊ณ„๋ฅผ ์ฟผ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ์„ค๋ช…
  1. ๋ฐ”๊นฅ ๊ฒฝ๊ณ„๋Š” ํ”„๋ฆฌ์…‹ @md ์ตœ์†Œ ๋„ˆ๋น„์ธ 64rem์˜ ๋ทฐํฌํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  2. ์•ˆ์ชฝ ๊ฒฝ๊ณ„๋Š” ๋…๋ฆฝ์ ์ธ @container(--md) ์ตœ์†Œ ๋„ˆ๋น„์ธ 28rem์˜ ์ฟผ๋ฆฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๋Œ€์ƒ ์š”์†Œ๋Š” ์ด ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋‘ ๋„ˆ๋น„๋Š” ๊ฐ™์€ ์ฒ™๋„๋กœ ๊ทธ๋ ธ์œผ๋ฉฐ ์ดˆ๊ธฐ ๊ธ€๊ผด ํฌ๊ธฐ์™€ ๋ฃจํŠธ ๊ธ€๊ผด ํฌ๊ธฐ๋Š” ๋ชจ๋‘ 16px์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ํฌ๊ธฐ ํ† ํฐ์„ ๋ฐ”๊ฟ”๋„ ๋‘ ์กฐ๊ฑด ์ •์˜๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ

์ด ๋ ˆ์ด์•„์›ƒ์€ ํ”„๋ฆฌ์…‹ md ๋ทฐํฌํŠธ ์ž„๊ณ„๊ฐ’ ๋ฏธ๋งŒ์—์„œ ํ•œ ์—ด์„ ์‚ฌ์šฉํ•˜๊ณ  ์ž„๊ณ„๊ฐ’๋ถ€ํ„ฐ ์„ธ ์—ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Notes
Drafts
Archive
<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))    }  }}