4.1 ๊ธฐ๋ณธ ๊ฐ๋
CSS-๋ณ์์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ๋ฐ์ํ ์น ๋์์ธ์ ๋ง๋ค๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ๋ค์ ์ ๊ณตํ๊ณ , ์ด๋ ์๋์ผ๋ก ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋๋ฐ์ด์ค์ ๋ง์ถฐ ์กฐ์ ๋๋ค. ๋ณ์๋ ์คํ์ผ์ ์ค์์์ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๊ณ , ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ํ๋ฉด ๋๋น์ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ด๋ฌํ ์คํ์ผ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ค๋ค.
๊ธฐ๋ณธ ๊ฐ๋
- CSS-๋ณ์: CSS ์ฝ๋ ์ ์ฒด์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฐ์ ์ค์ ํ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ ๋ฏธ๋์ด ์ฟผ๋ฆฌ์ ๊ฐ์ ๋ค์ํ ์ปจํ ์คํธ์์ ๋ณ๊ฒฝ๋ ์ ์์ด, ๋ฐ์ํ ๋์์ธ์ ํนํ ์ ์ฉํ๋ค.
- ๋ฏธ๋์ด ์ฟผ๋ฆฌ: CSS ์คํ์ผ์ ๋๋ฐ์ด์ค์ ํน์ฑ(์: ํ๋ฉด ๋๋น๋ ๋์ด)์ ๋ฐ๋ผ ์ ์ฉํ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ ์น ํ์ด์ง์ ์ธํ๊ณผ ๋์์ ๋ค์ํ ๋๋ฐ์ด์ค์ ๋ง์ถฐ ์กฐ์ ํ ์ ์๊ฒ ํ๋ค.
๋ฏธ๋์ด ์ฟผ๋ฆฌ์์ ๋ณ์ ์ฌ์ฉํ๊ธฐ
CSS-๋ณ์๋ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ์์์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํ์ผ ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ค. ์ด๋ ๋ ์ ์ฐํ๊ณ ์ฝ๊ฒ ์ ์ง๊ด๋ฆฌํ ์ ์๋ ๋ฐ์ํ ๋์์ธ์ ๋ง๋๋ ๋ฐ ๋์์ ์ค๋ค.
๋ฏธ๋์ด ์ฟผ๋ฆฌ์์ ๋ณ์ ์ฌ์ฉ ์์ :
:root {
--main-bg-color: #f0f0f0;
--main-text-color: #333;
--primary-color: #3498db;
--font-size: 16px;
}
body {
background-color: var(--main-bg-color);
color: var(--main-text-color);
font-size: var(--font-size);
}
a {
color: var(--primary-color);
}
@media (max-width: 600px) {
:root {
--main-bg-color: #e0e0e0;
--font-size: 14px;
}
}
@media (min-width: 601px) and (max-width: 1200px) {
:root {
--main-bg-color: #d0d0d0;
--font-size: 15px;
}
}
@media (min-width: 1201px) {
:root {
--main-bg-color: #f0f0f0;
--font-size: 16px;
}
}
<body>
<p>This is a paragraph with a link to <a href="#">Example.com</a>.</p>
</body>
์ค๋ช :
์ด ์์ ์์๋ ํ๋ฉด ๋๋น์ ๋ฐ๋ผ ๋ณ์ ๊ฐ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค:
- ํ๋ฉด ๋๋น๊ฐ 600px ์ดํ์ธ ๊ฒฝ์ฐ, ๋ฐฐ๊ฒฝ์ด ๋ ์ด๋์ด ์์กฐ๋ก ๋ณ๊ฒฝ๋๊ณ ๊ธ๊ผด ํฌ๊ธฐ๊ฐ ์์์ง๋๋ค.
- ํ๋ฉด ๋๋น๊ฐ 601px ์ด์ 1200px ์ดํ์ธ ๊ฒฝ์ฐ, ๋ฐฐ๊ฒฝ์ด ์ค๊ฐ ์์กฐ๋ก ๋ณ๊ฒฝ๋๊ณ ๊ธ๊ผด ํฌ๊ธฐ๊ฐ ์ฝ๊ฐ ์ปค์ง๋๋ค.
- ํ๋ฉด ๋๋น๊ฐ 1200px ์ด์์ธ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ ๋ณ์ ๊ฐ์ด ์ ์ฉ๋ฉ๋๋ค.
4.2 ๋ฏธ๋์ด ์ฟผ๋ฆฌ์์ ๋ณ์ ์ฌ์ฉ ์์
์์ 1: ๋ฐ์ํ ํจ๋ฉ ๋ฐ ๊ธ๊ผด ํฌ๊ธฐ
:root {
--padding: 20px;
--font-size: 16px;
}
.container {
padding: var(--padding);
font-size: var(--font-size);
}
@media (max-width: 600px) {
:root {
--padding: 10px;
--font-size: 14px;
}
}
@media (min-width: 601px) and (max-width: 1200px) {
:root {
--padding: 15px;
--font-size: 15px;
}
}
@media (min-width: 1201px) {
:root {
--padding: 20px;
--font-size: 16px;
}
}
<div class="container">
<p>This is a responsive container with adaptive padding and font size.</p>
</div>
์ค๋ช :
- ์ด ์์ ์์๋
.container
๊ฐ ํ๋ฉด ๋๋น์ ๋ฐ๋ผ ํจ๋ฉ๊ณผ ๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์์ 2: ๋ณ์์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ฌ์ดํธ ํ ๋งํ
:root {
--bg-color: #ffffff;
--text-color: #000000;
--link-color: #3498db;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
}
a {
color: var(--link-color);
}
@media (prefers-color-scheme: dark) {
:root {
--bg-color: #000000;
--text-color: #ffffff;
--link-color: #9b59b6;
}
}
<body>
<p>This text and link will adapt to the user's preferred color scheme. Visit <a href="#">Example.com</a>.</p>
</body>
์ค๋ช :
-
์ด ์์ ์์๋ ์ฌ์ฉ์์ ์ ํธ ์ปฌ๋ฌ ํ
๋ง(
prefers-color-scheme: dark
)์ ๋ฐ๋ผ ์ฌ์ดํธ์ ์์ ํ ๋ง๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ฐฐ๊ฒฝ์, ํ ์คํธ ์์ ๋ฐ ๋งํฌ ์์์ด ๋ฐ์ ํ ๋ง์ ์ด๋์ด ํ ๋ง ๊ฐ ์ ํ ์ ์๋์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
4.3 ๋ฐ์ํ ๊ทธ๋ฆฌ๋
๋ฏธ๋์ด ์ฟผ๋ฆฌ์ ๋ณ์๋ฅผ ์ฌ์ฉํ ๋ฐ์ํ ๊ทธ๋ฆฌ๋ ์์ :
:root {
--columns: 1fr;
--gap: 10px;
}
.grid-container {
display: grid;
grid-template-columns: var(--columns);
gap: var(--gap);
}
@media (min-width: 600px) {
:root {
--columns: 1fr 1fr;
}
}
@media (min-width: 900px) {
:root {
--columns: 1fr 1fr 1fr;
}
}
<div class="grid-container">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
<div>Item 4</div>
</div>
์ค๋ช :
- ์ด ์์ ๋ ํ๋ฉด ๋๋น์ ๋ฐ๋ผ ์ด ์๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ์ํ ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ข์ ํ๋ฉด(600px ์ดํ)์์๋ ํ๋์ ์ด, ์ค๊ฐ ํ๋ฉด(600px ์ด์ 900px ์ดํ)์์๋ ๋ ์ด, ๋์ ํ๋ฉด(900px ์ด์)์์๋ ์ธ ์ด์ด ์ฌ์ฉ๋ฉ๋๋ค.
GO TO FULL VERSION