'and', 'or', 'not'๊ณผ ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ CSS ์ปจํ ์ด๋ ์ฟผ๋ฆฌ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ํ์ํด ๋ณด์ธ์. ํน์ ์ปจํ ์ด๋ ์กฐ๊ฑด์ ๋ฐ์ํ๋ ๊ณ ๋๋ก ๋ฐ์์ ์ด๊ณ ์ ์์ฑ์ด ๋ฐ์ด๋ ๋ ์ด์์์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
CSS ์ปจํ ์ด๋ ์ฟผ๋ฆฌ ๋ ผ๋ฆฌ ์กฐํฉ ๋ง์คํฐํ๊ธฐ: ์ฟผ๋ฆฌ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ํ์ ๋ฐํํ๋ค
CSS ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ ๋ฐ์ํ ์น ๋์์ธ์ ์ค์ํ ๋ฐ์ ์ ์๋ฏธํ๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ๋ทฐํฌํธ๊ฐ ์๋ ์ปจํ ์ด๋ ์์์ ํฌ๊ธฐ๋ ์ํ์ ๋ฐ๋ผ ์์์ ์คํ์ผ์ ์ง์ ํ ์ ์๊ฒ ํด์ค๋๋ค. ๊ธฐ๋ณธ์ ์ธ ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ ๊ฐ๋ ฅํ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ง๋ง, ์ง์ ํ ์ ์ฌ๋ ฅ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ๊ฒฐํฉ๋ ๋ ๋ฐํ๋ฉ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋์์๋ 'and', 'or', 'not'์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋ ์กฐ๊ฑด์ ์ ํํ๊ฒ ๋ฐ์ํ๋ ์ ๊ตํ๊ณ ์ ์์ฑ ์๋ ๋ ์ด์์์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
CSS ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋? ๊ฐ๋จํ ๋ณต์ต
๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ดํด๋ณด๊ธฐ ์ ์, ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๊ฐ ๋ฌด์์ด๋ฉฐ ์ ์ค์ํ์ง ๊ฐ๋จํ ๋ณต์ตํด ๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ์กด์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ๋ทฐํฌํธ ๊ธฐ๋ฐ์ผ๋ก, ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ๊ธฐ์ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ฉด์ ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ ์ปจํ ์ด๋ ์์์ ํฌ๊ธฐ๋ ์ํ์ ๋ฐ๋ผ ์คํ์ผ์ ์ ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ๋ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ ๊ณตํ๋ฉฐ ์ง์ ํ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๋ฐ์ํ ๋์์ธ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ ๋ณด๋ฅผ ํ์ํ๋ ์นด๋ ์ปดํฌ๋ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ถ๋ชจ ์ปจํ ์ด๋ ๋ด์์ ์นด๋์ ๋๋น์ ๋ฐ๋ผ ๋ ์ด์์์ ์กฐ์ ํ ์ ์์ต๋๋ค. ์นด๋๊ฐ ์ถฉ๋ถํ ๋์ผ๋ฉด ์ ๋ณด๋ฅผ ํ์ผ๋ก ํ์ํ ์ ์๊ณ , ์ข์ผ๋ฉด ์์๋ฅผ ์์ง์ผ๋ก ์์ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์นด๋๊ฐ ํ์ด์ง์ ์ด๋ ์์น์ ์๋ ๋ฉ์ง๊ฒ ๋ณด์ด๋๋ก ํ ์ ์์ต๋๋ค.
์ปจํ
์ด๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ์์์ ์ปจํ
์ด๋ ์ปจํ
์คํธ๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ์ด๋ container-type ์์ฑ์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ง ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
size: ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๊ฐ ์ปจํ ์ด๋์ ๋๋น์ ๋์ด ๋ชจ๋์ ๋ฐ์ํฉ๋๋ค.inline-size: ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๊ฐ ์ธ๋ผ์ธ ํฌ๊ธฐ(์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ก ์ฐ๊ธฐ ๋ชจ๋์์๋ ๋๋น)์ ๋ฐ์ํฉ๋๋ค.
container-name์ ์ฌ์ฉํ์ฌ ์ปจํ
์ด๋์ ์ด๋ฆ์ ์ง์ ํ ์๋ ์์ผ๋ฉฐ, ์ด๋ ์ค์ฒฉ๋ ์ปจํ
์ด๋ ์ปจํ
์คํธ๊ฐ ์์ ๋ ํน์ ์ปจํ
์ด๋๋ฅผ ๋์์ผ๋ก ์ง์ ํ ์ ์๊ฒ ํด์ค๋๋ค.
์ปจํ
์ด๋ ์ปจํ
์คํธ๋ฅผ ์ค์ ํ๋ค๋ฉด, @container ๊ท์น์ ์ฌ์ฉํ์ฌ ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋ ๋ ์ ์ฉ๋๋ ์คํ์ผ์ ์ ์ํ ์ ์์ต๋๋ค.
๋ ผ๋ฆฌ ์ฐ์ฐ์์ ํ: 'and', 'or', 'not'
์ง์ ํ ๋ง๋ฒ์ ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ฅผ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ๊ฒฐํฉํ ๋ ์ผ์ด๋ฉ๋๋ค. ์ด ์ฐ์ฐ์๋ค์ ์ฌ์ฉํ๋ฉด ํน์ ์ปจํ ์ด๋ ์ํ๋ฅผ ๋์์ผ๋ก ํ๋ ๋ณต์กํ ์กฐ๊ฑด์ ๋ง๋ค ์ ์์ต๋๋ค. ๊ฐ ์ฐ์ฐ์๋ฅผ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
'and' ์ฐ์ฐ์: ์ฌ๋ฌ ์กฐ๊ฑด ์๊ตฌํ๊ธฐ
and ์ฐ์ฐ์๋ ์ฌ๋ฌ ์กฐ๊ฑด์ ๊ฒฐํฉํ์ฌ ๋ชจ๋ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋ ๋ ์คํ์ผ์ ์ ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ํน์ ํฌ๊ธฐ์ ์ํ ๊ธฐ์ค์ ๋์์ ์ถฉ์กฑํ๋ ์ปจํ
์ด๋๋ฅผ ๋์์ผ๋ก ํ ๋ ์ ์ฉํฉ๋๋ค.
์์: ๋๋น๊ฐ 500px๋ณด๋ค ํฌ๊ณ ํน์ ๋ฐ์ดํฐ ์์ฑ์ด ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ๋ค๋ฅด๊ฒ ์คํ์ผ์ ์ง์ ํ๊ณ ์ถ์ ์ปจํ ์ด๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค.
.card-container {
container-type: inline-size;
}
@container (min-width: 500px) and (data-theme="dark") {
.card {
background-color: #333;
color: #fff;
}
}
์ด ์์์์ .card๋ .card-container์ ๋๋น๊ฐ 500px ์ด์์ด๊ณ ๊ทธ๋ฆฌ๊ณ data-theme ์์ฑ์ด "dark"๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ์ด๋์ด ๋ฐฐ๊ฒฝ๊ณผ ํฐ์ ํ
์คํธ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ๋ ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ์ถฉ์กฑ๋์ง ์์ผ๋ฉด @container ๊ท์น ๋ด๋ถ์ ์คํ์ผ์ ์ ์ฉ๋์ง ์์ต๋๋ค.
'and'์ ์ค์ฉ์ ์ธ ์ฌ์ฉ ์ฌ๋ก:
- ์กฐ๊ฑด๋ถ ๋ ์ด์์ ๋ณ๊ฒฝ: ์ปดํฌ๋ํธ์ ๋๋น์ ํน์ ํด๋์ค ๋๋ ๋ฐ์ดํฐ ์์ฑ์ ์กด์ฌ ์ฌ๋ถ ๋ชจ๋์ ๋ฐ๋ผ ๋ ์ด์์์ ๋ณ๊ฒฝํฉ๋๋ค(์: ์ปจํ ์ด๋๊ฐ ์ถฉ๋ถํ ๋๊ณ "featured" ํด๋์ค๊ฐ ์๋ ๊ฒฝ์ฐ ๋จ์ผ ์ด์์ ๋ค์ค ์ด ๋ ์ด์์์ผ๋ก ๋ณ๊ฒฝ).
- ํ ๋ง๋ณ ์คํ์ผ๋ง: ์ปจํ ์ด๋์ ํ ๋ง(์: ๋คํฌ ๋๋ ๋ผ์ดํธ ๋ชจ๋)์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉํฉ๋๋ค.
- ์ํ ๊ธฐ๋ฐ ์คํ์ผ๋ง: ์ปดํฌ๋ํธ์ ํฌ๊ธฐ์ ํน์ ์ํ(์: "active", "disabled") ์ฌ๋ถ์ ๋ฐ๋ผ ๋ชจ์์ ์กฐ์ ํฉ๋๋ค.
'or' ์ฐ์ฐ์: ์ ์ด๋ ํ๋์ ์กฐ๊ฑด ๋ง์กฑํ๊ธฐ
or ์ฐ์ฐ์๋ ์ง์ ๋ ์กฐ๊ฑด ์ค ์ ์ด๋ ํ๋๊ฐ ์ถฉ์กฑ๋ ๋ ์คํ์ผ์ ์ ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ํฌ๊ธฐ ๋ฒ์์ ์ํ๊ฑฐ๋ ๋ค๋ฅธ ์ํ๋ฅผ ๊ฐ์ง ์ปจํ
์ด๋๋ฅผ ๋์์ผ๋ก ํ ๋ ์ ์ฉํฉ๋๋ค.
์์: ์ปจํ ์ด๋์ ๋๋น๊ฐ 300px๋ณด๋ค ์๊ฑฐ๋ 800px๋ณด๋ค ํฐ ๊ฒฝ์ฐ์ ํน์ ์คํ์ผ์ ์ ์ฉํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค.
.card-container {
container-type: inline-size;
}
@container (max-width: 300px) or (min-width: 800px) {
.card {
padding: 1em;
border: 1px solid #ccc;
}
}
์ด ์์์์ .card๋ .card-container์ ๋๋น๊ฐ 300px๋ณด๋ค ์๊ฑฐ๋ ๋๋ 800px๋ณด๋ค ํฐ ๊ฒฝ์ฐ์ 1em์ ํจ๋ฉ๊ณผ ํ
๋๋ฆฌ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค. ์ปจํ
์ด๋์ ๋๋น๊ฐ 300px๊ณผ 800px ์ฌ์ด(์์ชฝ ํฌํจ)์ ์์ผ๋ฉด @container ๊ท์น ๋ด๋ถ์ ์คํ์ผ์ ์ ์ฉ๋์ง ์์ต๋๋ค.
'or'์ ์ค์ฉ์ ์ธ ์ฌ์ฉ ์ฌ๋ก:
- ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ ์ฒ๋ฆฌ: ์ปดํฌ๋ํธ๊ฐ ์์ ํ๋ฉด(์: ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ) ๋๋ ํฐ ํ๋ฉด(์: ๋ฐ์คํฌํฑ)์ ํ์๋๋์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉํฉ๋๋ค.
- ๋์ฒด ๋ ์ด์์ ์ ๊ณต: ์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ ์ด์์์ ์ ๊ณตํฉ๋๋ค.
- ๋ค์ค ํ ๋ง ์ง์: ์ปดํฌ๋ํธ์ ๋ค๋ฅธ ํ ๋ง๋ ๋ณํ์ ํน์ ํ ์คํ์ผ์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ปดํฌ๋ํธ๋ ํฌ๊ธฐ์ ๊ด๊ณ์์ด "primary" ๋๋ "secondary" ์ปจํ ์คํธ์์ ์ฌ์ฉ๋๋์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ ๊ฐ์ง ์ ์์ต๋๋ค.
'not' ์ฐ์ฐ์: ํน์ ์กฐ๊ฑด ์ ์ธํ๊ธฐ
not ์ฐ์ฐ์๋ ํน์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์์ ๋ ์คํ์ผ์ ์ ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๋ก์ง์ ๋ฐ์ ์ํค๊ฑฐ๋ ํน์ ํน์ฑ์ ๊ฐ์ง ์๋ ์ปจํ
์ด๋๋ฅผ ๋์์ผ๋ก ํ ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
์์: 'featured' ํด๋์ค๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ์ปจํ ์ด๋์ ํน์ ์คํ์ผ์ ์ ์ฉํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค.
.card-container {
container-type: inline-size;
}
@container not (.featured) {
.card {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
}
์ด ์์์์ .card๋ .card-container์ "featured" ํด๋์ค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ค ์๋์ฐ๊ฐ ์ ์ฉ๋ฉ๋๋ค. ์ปจํ
์ด๋์ "featured" ํด๋์ค๊ฐ ์์ผ๋ฉด ๋ฐ์ค ์๋์ฐ๋ ์ ์ฉ๋์ง ์์ต๋๋ค.
'not'์ ์ค์ฉ์ ์ธ ์ฌ์ฉ ์ฌ๋ก:
- ๊ธฐ๋ณธ ์คํ์ผ ์ ์ฉ: ํน์ ํด๋์ค๋ ์์ฑ์ด ์๋ ์์์ ๊ธฐ๋ณธ ์คํ์ผ์ ์ ์ฉํ๊ธฐ ์ํด
not์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ํน์ ๊ฒฝ์ฐ์ ์คํ์ผ์ ๋ฎ์ด์ธ ํ์๋ฅผ ์์ CSS๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค. - ์กฐ๊ฑด๋ถ ๋ก์ง ๋ฐ์ : ๋๋ก๋ ์ด๋ค ๊ฒฝ์ฐ๊ฐ ์๋์ด์ผ ํ๋์ง์ ๋ฐ๋ผ ์คํ์ผ์ ์ ์ํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ์ ์์ต๋๋ค.
not์ ๋ก์ง์ ๋ฐ์ ์์ผ ํน์ ์กฐ๊ฑด์ ์ถฉ์กฑํ์ง ์๋ ์์๋ฅผ ๋์์ผ๋ก ํ ์ ์๊ฒ ํฉ๋๋ค. - ์์ธ ๋ง๋ค๊ธฐ: ์ผ๋ฐ์ ์ธ ์คํ์ผ๋ง ๊ท์น์ ๋ํ ์์ธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด
not์ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ด์ง์ ํน์ ์น์ ๋ด์ ์๋ ์ปจํ ์ด๋๋ฅผ ์ ์ธํ ๋ชจ๋ ์ปจํ ์ด๋์ ํน์ ์คํ์ผ์ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ณต์กํ ์กฐ๊ฑด์ ์ํ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ฒฐํฉ
์ปจํ ์ด๋ ์ฟผ๋ฆฌ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ์ง์ ํ ํ์ ์ด๋ค์ ๊ฒฐํฉํ์ฌ ๋ณต์กํ ์กฐ๊ฑด์ ๋ง๋๋ ๋ฐ ์์ต๋๋ค. JavaScript๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์์ฒ๋ผ ๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ๊ทธ๋ฃนํํ๊ณ ํ๊ฐ ์์๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
์์: ์ปจํ ์ด๋์ ๋๋น๊ฐ 600px๋ณด๋ค ํฌ๊ณ ๊ทธ๋ฆฌ๊ณ 'primary' ํด๋์ค๋ฅผ ๊ฐ์ก๊ฑฐ๋ ๋๋ 'secondary' ํด๋์ค๋ฅผ ๊ฐ์ง์ง *์์* ๊ฒฝ์ฐ์ ํน์ ์คํ์ผ์ ์ ์ฉํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค.
.card-container {
container-type: inline-size;
}
@container (min-width: 600px) and (.primary or not(.secondary)) {
.card {
border: 2px solid blue;
}
}
์ด ์์์์ .card๋ ๋ค์ ์กฐ๊ฑด๋ค์ด ์ถฉ์กฑ๋ ๋ ํ๋์ ํ
๋๋ฆฌ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค:
.card-container์ ๋๋น๊ฐ 600px๋ณด๋ค ๋์ต๋๋ค.- ๊ทธ๋ฆฌ๊ณ ๋ค์ ์ค ํ๋์ ๋๋ค:
.card-container์ "primary" ํด๋์ค๊ฐ ์์ต๋๋ค.- ๋๋
.card-container์ "secondary" ํด๋์ค๊ฐ ์์ต๋๋ค.
์ด ์์๋ ๊ฒฐํฉ๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋งค์ฐ ๊ตฌ์ฒด์ ์ด๊ณ ๋ฏธ๋ฌํ ์คํ์ผ๋ง ๊ท์น์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
์ฐ์ฐ์ ๊ฒฐํฉ ์ ์ ์์ฌํญ:
- ์ฐ์ฐ์ ์ฐ์ ์์: ๊ดํธ๋ ํ๊ฐ ์์๋ฅผ ์ ์ดํ๋ ๋ฐ ๋์์ด ๋์ง๋ง, ๋
ผ๋ฆฌ ์ฐ์ฐ์์ ๊ธฐ๋ณธ ์ฐ์ ์์๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. CSS ์ปจํ
์ด๋ ์ฟผ๋ฆฌ์์
and๋or๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ต๋๋ค. ์ฆ,(A or B) and C๋A or (B and C)์ ๋ค๋ฆ ๋๋ค. ๋ชจํธํจ์ ํผํ๊ณ ํ๊ฐ ์์๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ๊ธฐ ์ํด ๊ดํธ๋ฅผ ์ฌ์ฉํ์ธ์. - ๊ฐ๋ ์ฑ: ๋ณต์กํ ์กฐ๊ฑด์ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค. ๊ดํธ์ ์ฃผ์์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์กฐ๊ฑด์ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋ถ๋ถ์ผ๋ก ๋๋์ด ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค์ธ์.
- ํ ์คํธ: ๋ค์ํ ์ปจํ ์ด๋ ํฌ๊ธฐ์ ์ํ๋ก ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ฅผ ์ฒ ์ ํ ํ ์คํธํ์ฌ ์์๋๋ก ์๋ํ๋์ง ํ์ธํ์ธ์. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฉ๋ ์คํ์ผ์ ๊ฒ์ฌํ๊ณ ์ฌ๋ฐ๋ฅธ ๊ท์น์ด ์ ์ฉ๋๊ณ ์๋์ง ํ์ธํ์ธ์.
์ค์ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
์ปจํ ์ด๋ ์ฟผ๋ฆฌ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์์ฑ ์๊ณ ๋ฐ์ํ์ธ ๋ ์ด์์์ ๋ง๋๋ ๋ช ๊ฐ์ง ์ค์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ 1: ์ ์ฐํ ์นด๋ ์ปดํฌ๋ํธ
๋๋น์ ๋ฐ๋ผ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ์ํ๋ ์นด๋ ์ปดํฌ๋ํธ๋ฅผ ์๊ฐํด ๋ณด์ธ์. ์ปจํ ์ด๋ ์ฟผ๋ฆฌ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์นด๋์ ๋ ์ด์์๊ณผ ๋ชจ์์ ์ ์ดํ ์ ์์ต๋๋ค.
.card-container {
container-type: inline-size;
width: 100%;
max-width: 800px; /* Example max-width */
margin: 0 auto;
}
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
padding: 1em;
}
.card img {
width: 100%;
max-width: 200px; /* Example max-width for the image */
margin-bottom: 1em;
}
/* Default styles for small containers */
@container (max-width: 400px) {
.card {
text-align: center;
}
.card img {
margin: 0 auto 1em;
}
}
/* Styles for medium containers */
@container (min-width: 401px) and (max-width: 600px) {
.card {
flex-direction: row;
align-items: center;
}
.card img {
margin: 0 1em 0 0;
}
.card > *:not(img) {
flex: 1;
}
}
/* Styles for large containers */
@container (min-width: 601px) {
.card {
flex-direction: row;
align-items: flex-start;
}
.card img {
margin: 0 1em 0 0;
}
.card > *:not(img) {
flex: 1;
}
}
์ด ์์์์:
- ๋๋น๊ฐ 400px ์ดํ์ธ ์ปจํ ์ด๋์ ๊ฒฝ์ฐ, ์นด๋ ์์๋ค์ด ์ค์์ ์ ๋ ฌ๋ฉ๋๋ค.
- ๋๋น๊ฐ 401px์์ 600px ์ฌ์ด์ธ ์ปจํ ์ด๋์ ๊ฒฝ์ฐ, ์ด๋ฏธ์ง์ ํ ์คํธ๊ฐ ํ์ผ๋ก ํ์๋๋ฉฐ ์ด๋ฏธ์ง๊ฐ ์ผ์ชฝ์ ์์นํฉ๋๋ค.
- ๋๋น๊ฐ 600px๋ณด๋ค ๋์ ์ปจํ ์ด๋์ ๊ฒฝ์ฐ, ๋ ์ด์์์ ์ค๊ฐ ํฌ๊ธฐ ์ปจํ ์ด๋์ ๋์ผํ๊ฒ ์ ์ง๋์ง๋ง ํญ๋ชฉ๋ค์ด ์์ ์ง์ ์ ์ ๋ ฌ๋ฉ๋๋ค.
์์ 2: ๋ฐ์ํ ๋ด๋น๊ฒ์ด์ ๋ฉ๋ด
๋ ๋ค๋ฅธ ์ค์ฉ์ ์ธ ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋ฐ๋ผ ์ ์ํ๋ ๋ฐ์ํ ๋ด๋น๊ฒ์ด์ ๋ฉ๋ด์ ๋๋ค. ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฉํธํ ์์ด์ฝ ๊ธฐ๋ฐ ๋ฉ๋ด์ ์ ์ฒด ํ ์คํธ ๊ธฐ๋ฐ ๋ฉ๋ด ์ฌ์ด๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
.nav-container {
container-type: inline-size;
background-color: #f0f0f0;
padding: 0.5em;
}
.nav-container ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
justify-content: space-around;
}
.nav-container li a {
text-decoration: none;
color: #333;
display: flex;
align-items: center;
padding: 0.5em;
}
.nav-container i {
font-size: 1.2em;
margin-right: 0.5em;
}
.nav-container span {
display: none; /* Hide text by default */
}
/* Styles for larger containers */
@container (min-width: 400px) {
.nav-container span {
display: inline; /* Show text for larger containers */
}
}
์ด ์์์์ ๋ด๋น๊ฒ์ด์ ๋ฉ๋ด ํญ๋ชฉ์ ์ฒ์์ ์์ด์ฝ๋ง ํ์ํฉ๋๋ค. ์ปจํ ์ด๋ ๋๋น๊ฐ 400px๋ณด๋ค ๋์ด์ง๋ฉด ์์ด์ฝ๊ณผ ํจ๊ป ํ ์คํธ ๋ ์ด๋ธ์ด ํ์๋์ด ๋ ์ค๋ช ์ ์ธ ๋ฉ๋ด๊ฐ ๋ง๋ค์ด์ง๋๋ค.
์์ 3: ๊ตญ์ ํ ๋ฐ ํ ์คํธ ๋ฐฉํฅ
์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ ํ ์คํธ ๋ฐฉํฅ์ ๋ฐ๋ผ ๋ ์ด์์์ ์กฐ์ ํ๋ ๋ฐ์๋ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์๋์ด๋ ํ๋ธ๋ฆฌ์ด์ ๊ฐ์ด ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฐ๋(RTL) ์ธ์ด๋ฅผ ์ง์ํ๋ ๊ตญ์ ์ ์ธ ์น์ฌ์ดํธ์ ํนํ ์ค์ํฉ๋๋ค.
Article Title
Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...
.article-container {
container-type: inline-size;
width: 100%;
max-width: 800px;
margin: 0 auto;
}
.article {
padding: 1em;
}
/* Default styles for LTR (Left-to-Right) */
.article h1 {
text-align: left;
}
/* Styles for RTL (Right-to-Left) */
@container (dir(rtl)) {
.article h1 {
text-align: right;
}
}
์ด ์์์์ dir(rtl) ์ปจํ
์ด๋ ์ฟผ๋ฆฌ๋ dir ์์ฑ์ด "rtl"๋ก ์ค์ ๋ ์ปจํ
์ด๋๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค. ํ
์คํธ ๋ฐฉํฅ์ด RTL์ผ ๋, ์ ๋ชฉ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ์ธ์ด์ ์ฐ๊ธฐ ์์คํ
์ ๋ง๊ฒ ๋ ์ด์์์ด ์ ์ ํ๊ฒ ์กฐ์ ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ปจํ ์ด๋ ์ฟผ๋ฆฌ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ปจํ ์ด๋ ์ฟผ๋ฆฌ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ผ๋์ ๋์ธ์:
- ๋จ์ํ๊ฒ ์์ํ์ธ์: ๊ธฐ๋ณธ์ ์ธ ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ก ์์ํ์ฌ ํ์์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ๋์ ํ์ธ์. ์ดํดํ๊ณ ์ ์งํ๊ธฐ ์ด๋ ค์ด ์ง๋์น๊ฒ ๋ณต์กํ ์กฐ๊ฑด์ ๋ง๋๋ ๊ฒ์ ํผํ์ธ์.
- ์๋ฏธ ์๋ ์ด๋ฆ ์ฌ์ฉ: ์์ ์ ์ธ ํด๋์ค ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ ์์ฑ์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋ ์ฟผ๋ฆฌ์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์์ฒด์ ์ผ๋ก ๋ฌธ์ํ๋๋๋ก ํ์ธ์.
- ๊ฐ๋ ์ฑ ์ฐ์ : ๊ดํธ์ ์ฃผ์์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์กฐ๊ฑด์ ๊ฐ๋ ์ฑ์ ํฅ์์ํค์ธ์. ๊ธด ์กฐ๊ฑด์ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋ถ๋ถ์ผ๋ก ๋๋์ธ์.
- ์ฒ ์ ํ ํ ์คํธ: ๋ค์ํ ์ปจํ ์ด๋ ํฌ๊ธฐ์ ์ํ๋ก ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ฅผ ํ ์คํธํ์ฌ ์์๋๋ก ์๋ํ๋์ง ํ์ธํ์ธ์. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฉ๋ ์คํ์ผ์ ๊ฒ์ฌํ๊ณ ์ฌ๋ฐ๋ฅธ ๊ท์น์ด ์ ์ฉ๋๊ณ ์๋์ง ํ์ธํ์ธ์.
- ์ฑ๋ฅ ๊ณ ๋ ค: ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ์ด ์ข์ง๋ง, ๋ณต์กํ ์กฐ๊ฑด์ ์ ์ฌ์ ์ผ๋ก ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ๊ด๋ฒ์ํ ๊ณ์ฐ์ ์ํํด์ผ ํ๋ ์ง๋์น๊ฒ ๋ณต์กํ ์กฐ๊ฑด์ ๋ง๋๋ ๊ฒ์ ํผํ์ธ์.
- ์ ์ง์ ํฅ์: ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ฅผ ์ ์ง์ ํฅ์ ๊ธฐ๋ฒ์ผ๋ก ์ฌ์ฉํ์ธ์. ์ปจํ ์ด๋ ์ฟผ๋ฆฌ๋ฅผ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ๋์ฒด ๋ฐฉ์์ ์ ๊ณตํ์ฌ ๊ธฐ๋ณธ์ ์ธ ์์ค์ ๊ธฐ๋ฅ์ฑ์ ๋ณด์ฅํ์ธ์.
- ์ฝ๋ ๋ฌธ์ํ: ์ปจํ ์ด๋ ์ฟผ๋ฆฌ์ ๊ทธ ๋ฐฐ๊ฒฝ ๋ก์ง์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ์ธ์. ์ด๋ ์์ ๊ณผ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ๋์ค์ ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ ์ฝ๊ฒ ๋ง๋ค์ด ์ค ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก : ์ปจํ ์ด๋ ์ฟผ๋ฆฌ ๋ก์ง์ ์ ์ฐ์ฑ ์์ฉํ๊ธฐ
CSS ์ปจํ ์ด๋ ์ฟผ๋ฆฌ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ ๊ณ ๋๋ก ๋ฐ์์ ์ด๊ณ ์ ์์ฑ์ด ๋ฐ์ด๋ ๋ ์ด์์์ ๋ง๋ค๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. 'and', 'or', 'not'์ ๊ฒฐํฉํ์ฌ ํน์ ์ปจํ ์ด๋ ์ํ๋ฅผ ๋์์ผ๋ก ํ๋ ๋ณต์กํ ์กฐ๊ฑด์ ๋ง๋ค๊ณ ๊ทธ์ ๋ฐ๋ผ ์คํ์ผ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๋ ์ด์์์ ๋ํ ๋ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ์ง์ ํ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๋ฐ์ํ ๋์์ธ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ปจํ ์ด๋ ์ฟผ๋ฆฌ ์ง์์ด ๊ณ์ ํ๋๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ๊ธฐ์ ์ ๋ง์คํฐํ๋ ๊ฒ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ ๋ ์ค์ํด์ง ๊ฒ์ ๋๋ค. ์ด ๊ฐ์ด๋์์ ์ค๋ช ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์คํํจ์ผ๋ก์จ ์ปจํ ์ด๋ ์ฟผ๋ฆฌ์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ๋ฐํํ๊ณ ๋ค์ํ ๊ธฐ๊ธฐ์ ์ปจํ ์คํธ์์ ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ปจํ ์ด๋ ์ฟผ๋ฆฌ ๋ก์ง์ ์ ์ฐ์ฑ์ ์์ฉํ๊ณ ๋ฐ์ํ ๋์์ธ ๊ธฐ์ ์ ํ ๋จ๊ณ ๋์ด์ฌ๋ฆฌ์ธ์!