็ก์
Media query (๋ฏธ๋์ด ์ฟผ๋ฆฌ) ๋ณธ๋ฌธ
๐ข Media query (๋ฏธ๋์ด ์ฟผ๋ฆฌ)
ํ๋ฉด ํฌ๊ธฐ, ํด์๋, ๊ธฐ๊ธฐ ํน์ฑ ์ํ ์กฐ๊ฑด์ ๋ฐ๋ผ CSS๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ฉํ๋ ๊ธฐ์ .
โผ ๋ฌธ๋ฒ
@media (์กฐ๊ฑด) {
/* ์กฐ๊ฑด์ด ๋ง์ ๋ ์ ์ฉํ CSS */
selector {
property: value;
}
}
- @media (๋ฏธ๋์ด ์ ํ) and (์กฐ๊ฑด) { }
1๏ธโฃ media type (๋ฏธ๋์ด ์ ํ)
์ด๋ค ์ฅ์น์์ ์คํ์ผ์ ์ ์ฉํ ์ง ๊ฒฐ์ ํ๋ ์กฐ๊ฑด.
๐น all
๋ชจ๋ ๋ฏธ๋์ด ์ฅ์น.
@media (max-width: 768px) {
body {
background: lightblue;
}
}
- ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์๋ต ๊ฐ๋ฅ.
๐น screen
์ปดํจํฐ, ํ๋ธ๋ฆฟ, ์ค๋งํธํฐ ๋ฑ ํ๋ฉด์ด ์๋ ๊ธฐ๊ธฐ.
@media screen and (max-width: 768px) {
body {
background: lightblue;
}
}
๐น print
์ธ์ ๊ฒฐ๊ณผ๋ฌผ์ด๋ ์ธ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ๋ฉด.
@media print {
body {
background: white;
color: black;
}
}
2๏ธโฃ ์กฐ๊ฑด
๐น and
@media (min-width: 768px) and (max-width: 1024px) {
}
- ๋ชจ๋ ์กฐ๊ฑด์ด ๋ง์กฑ๋ ๋๋ง ์ ์ฉ. (AND ์กฐ๊ฑด)
๐น not
@media not (max-width: 768px) {
}
- ์ ์ฒด ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ๋ฐ๋๋ก ํด์. (๋ฐ๋ ์กฐ๊ฑด)
๐น , (์ผํ)
@media (max-width: 768px), (orientation: portrait) {
}
- ์ฌ๋ฌ ์กฐ๊ฑด ์ค ํ๋๋ง ์ฐธ์ด์ด๋ ์ ์ฉ. (OR ์ฐ์ฐ)
3๏ธโฃ ๊ฐ๋ก/์ธ๋ก ๋ฐ ํ์ ์์ฑ
๋ฐ์ํ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๊ธฐ์ค์ผ๋ก, ํ๋ฉด์ ํฌ๊ธฐ์ ๋ฐฉํฅ์ ๋ฐ๋ฅธ ์ธ๋ฐํ ์กฐ์ .
๐นWidth (๊ฐ๋ก) ์ค์ฌ์ค๊ณ
/* ํ๋ฉด ๊ฐ๋ก๊ฐ ์ ํํ 600px์ผ ๋ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝ */
@media (width: 600px) {
body {
background-color: lightblue;
}
}
/* ํ๋ฉด ๊ฐ๋ก๊ฐ 800px ์ด์์ผ ๋ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝ */
@media (min-width: 800px) {
body {
background-color: lightgreen;
}
}
/* ํ๋ฉด ๊ฐ๋ก๊ฐ 500px ์ดํ์ผ ๋ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝ */
@media (max-width: 500px) {
body {
background-color: lightcoral;
}
}
- width: ๋ทฐํฌํธ(viewport, ํ๋ฉด) ๊ฐ๋ก ๊ธธ์ด
- min-width: ์ต์ ๊ฐ๋ก ๊ธธ์ด. (ํฐ ํ๋ฉด ๋์)
- max-width: ์ต๋ ๊ฐ๋ก ๊ธธ์ด. (์์ ํ๋ฉด ๋์)
๐น Height (์ธ๋ก)
/* ํ๋ฉด ์ธ๋ก๊ฐ ์ ํํ 600px์ผ ๋ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝ */
@media (height: 600px) {
body {
background-color: lightblue;
}
}
/* ํ๋ฉด ์ธ๋ก๊ฐ 800px ์ด์์ผ ๋ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝ */
@media (min-height: 800px) {
body {
background-color: lightgreen;
}
}
/* ํ๋ฉด ์ธ๋ก๊ฐ 500px ์ดํ์ผ ๋ ๋ฐฐ๊ฒฝ์ ๋ณ๊ฒฝ */
@media (max-height: 500px) {
body {
background-color: lightcoral;
}
}
- height: ๋ทฐํฌํธ(viewport, ํ๋ฉด) ์ธ๋ก ๊ธธ์ด
- min-height: ์ต์ ์ธ๋ก ๊ธธ์ด. (ํฐ ํ๋ฉด ๋์)
- max-height: ์ต๋ ์ธ๋ก ๊ธธ์ด. (์์ ํ๋ฉด ๋์)
๐น Orientation (ํ์ ) ๊ธฐ๊ธฐ์ ๋ฐฉํฅ ์ํ ๊ฐ์ง.
/* ์ธ๋ก ๋ชจ๋์ผ ๋ */
@media (orientation: portrait) {
body {
font-size: 14px;
}
}
/* ๊ฐ๋ก ๋ชจ๋์ผ ๋ */
@media (orientation: landscape) {
body {
font-size: 16px;
}
}
- portrait: ์ธ๋ก ๋ชจ๋. (๋์ด > ๋๋น)
- landscape: ๊ฐ๋ก ๋ชจ๋. (๋๋น > ๋์ด)
โผ Breakpoints (๋ฏธ๋์ด ์ฟผ๋ฆฌ ์ค๋จ์ )
ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ ์ด์์์ด ๋ณ๊ฒฝ๋๋ ๊ธฐ์ค ์ง์ .
/* ๋ชจ๋ฐ์ผ (๊ธฐ๋ณธ) */
.container {
display: block;
}
/* ํ๋ธ๋ฆฟ */
@media (min-width: 768px) {
.container {
display: grid;
grid-template-columns: 1fr 1fr;
}
}
/* ๋ฐ์คํฌํ */
@media (min-width: 1024px) {
.container {
grid-template-columns: 1fr 1fr 1fr;
}
}
- ๋ชจ๋ฐ์ผ: ๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋ก ๋จ์ผ ์ด ๋ ์ด์์
- ํ๋ธ๋ฆฟ: ํ๋ฉด 768px ์ด์ → 2์ด ๊ทธ๋ฆฌ๋
- ๋ฐ์คํฌํฑ: ํ๋ฉด 1024px ์ด์ → 3์ด ๊ทธ๋ฆฌ๋
๐ ๊ธฐ๋ณธ ๊ธฐ์ค (๊ฐ์ฅ ๋ง์ด ์ฐ๋ ๊ตฌ์กฐ) ๐
| ๊ธฐ๊ธฐ ๊ตฌ๋ถ | ์ค๋จ์ (Breakpoints) |
| ๋ชจ๋ฐ์ผ | ~ 767px |
| ํ๋ธ๋ฆฟ | 768px ~ 1023px |
| ๋ฐ์คํฌํ | 1024px ~ |
โผ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ์ ์ฉ ๋ฐฉ๋ฒ
1๏ธโฃ ์ธ๋ถ CSS ํ์ผ๋ก ๋ถ๋ฆฌ
HTML์ <link> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ๋ง๋ ํด๋น CSS ํ์ผ์ ๋ก๋.
<link rel="stylesheet" media="screen and (min-width: 768px)" href="tablet.css">
- ์ฅ์ : ํ์ผ์ ๊ธฐ๋ฅ/๋๋ฐ์ด์ค๋ณ๋ก ๋ถ๋ฆฌ ๊ฐ๋ฅ, ๊ตฌ์กฐ๊ฐ ๋ช ํํจ.
- ๋จ์ : HTTP ์์ฒญ ์ฆ๊ฐ → ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ, ๊ด๋ฆฌ ํ์ผ ๋ง์์ง, ์์ฆ์ ๋ฒ๋ค๋ง ํ๊ฒฝ์์ ๋นํจ์จ์ .
๐ ์์ฃผ ํฐ ํ๋ก์ ํธ์์ ๋ถ๋ฆฌ ํ์ํ ๋, ํ๋ฆฐํธ ์ ์ฉ CSS (print.css) ๊ฐ์ ํน์ํ ๊ฒฝ์ฐ๋ง ์ฌ์ฉ.
2๏ธโฃ CSS ๋ด๋ถ์์ ์ง์ ์์ฑ (ํ์ค ๋ฐฉ์)
CSS ํ์ผ ๋ด๋ถ์์ ์ง์ ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค.
/* ๊ธฐ๋ณธ ์คํ์ผ (๋ชจ๋ฐ์ผ ์ฐ์ ) */
body { font-size: 14px; }
/* 1024px ์ด์์ ํ๋ฉด (PC) */
@media screen and (min-width: 1024px) {
body { font-size: 18px; }
}
- ์ฅ์ : ํ ํ์ผ์์ ๊ด๋ฆฌ → ์ ์ง๋ณด์ ์ฌ์, ์ฝ๋ ํ๋ฆ ์ดํด ์ฌ์, ์ฑ๋ฅ์ ์ ๋ฆฌ. (์์ฒญ ๊ฐ์)
๐โ POINT ๐โ
โ๏ธ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ์ฝํ ์ธ ๊ฐ ๊นจ์ง๊ธฐ ์์ํ๋ ์ง์ ์ ์ค๋จ์ (Breakpoint)์ผ๋ก ์ก๋ ๊ฒ์ด ๊ฐ์ฅ ์ข๋ค. โ๏ธ
๐ ์น ๊ฐ๋ฐ์ ๋๊ตฌ ์ฐฝ์์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ํ์ํ๊ธฐ
- ๊ฐ๋ฐ์ ๋๊ตฌ ์ด๊ธฐ
- Chrome ๊ธฐ์ค: F12 ๋๋ Ctrl + Shift + I (Mac: Cmd + Option + I)
- Firefox, Edge ๋ฑ๋ ์ ์ฌํ๊ฒ ์ด ์ ์๋ค.
- ๊ธฐ๊ธฐ ํด๋ฐ ํ์ฑํ
- ๊ฐ๋ฐ์ ๋๊ตฌ ์๋จ์ ํด๋ํฐ/ํ๋ธ๋ฆฟ ์์ด์ฝ ํด๋ฆญ
- ๋จ์ถํค: Ctrl + Shift + M (Mac: Cmd + Shift + M)
- ๋ฏธ๋์ด ์ฟผ๋ฆฌ ํ์
- ๊ธฐ๊ธฐ ํด๋ฐ๊ฐ ์ผ์ง ์ํ์์ ํ๋ฉด ์๋จ ๋๊ธ์ ๊ทผ์ฒ์ ์๋ “Show media queries” ์ต์ ์ฒดํฌ
- ํ๋ฉด ํญ์ ๋ฐ๋ผ ์์ ๋ง๋๋ก ๊ฐ ๋ฏธ๋์ด ์ฟผ๋ฆฌ์ ์ ์ฉ ๊ตฌ๊ฐ์ด ํ์๋จ
- ์ด๋ ๊ฒ ํ๋ฉด ํน์ ํ๋ฉด ๋๋น์์ ๋ ์ด์์์ด ์ด๋ป๊ฒ ๋ฐ๋๋์ง ๋ฐ๋ก ํ์ธ ๊ฐ๋ฅ
๐ก ์ถ๊ฐ ํ:
- ๋๊ธ์๋ฅผ ๋๋๊ทธํด์ ๋ธ๋ผ์ฐ์ ๋๋น๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋ฏธ๋์ด ์ฟผ๋ฆฌ๊ฐ ์ ์ฉ๋๋ ์๊ฐ ์์์ด ๋ณํด, ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ ๋ณํ๋ฅผ ๊ด์ฐฐํ ์ ์๋ค.
- Chrome DevTools์์ Responsive ๋ชจ๋ ์ธ์๋ ๋ค์ํ ์ฅ์น ํ๋ฆฌ์ ์ ์ ํํ๋ฉด ์ค์ ์ค๋งํธํฐ/ํ๋ธ๋ฆฟ ํ๊ฒฝ์์ ํ ์คํธ ๊ฐ๋ฅ.
'<style>' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Flexbox Layout (ํ๋ ์ค๋ฐ์ค ๋ ์ด์์) (0) | 2026.03.24 |
|---|---|
| Grid Layout ๊ณผ ์์ (0) | 2026.03.24 |
| RWD Image ๋ฐ์ํ ์ด๋ฏธ์ง (0) | 2026.03.23 |
| em๊ณผ rem (0) | 2026.03.23 |
| Viewport (๋ทฐํฌํธ) (0) | 2026.03.23 |