[CSS] @media query
๋ฏธ๋์ด ์ฟผ๋ฆฌ, @media query ์ดํดํ๊ธฐ
๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ๋จ๋ง๊ธฐ ์ ํ(์ถ๋ ฅ๋ฌผ vs ํ๋ฉด)๊ณผ, ์ด๋ค ํน์ฑ์ด๋ ์์น(ํ๋ฉด ํด์๋, *๋ทฐํฌํธ ๋๋น ๋ฑ)์ ๋ฐ๋ผ ์น์ฌ์ดํธ๋ ์ฑ์ ์คํ์ผ์ ์์ ํ ๋ ์ ์ฉํ๋ค.
*๋ทฐํฌํธ(viewport) :: ํ์ฌ ํ๋ฉด์ ๋ณด์ฌ์ง๊ณ ์๋ ๋ค๊ฐํ(๋ณดํต ์ง์ฌ๊ฐํ)์ ์์ญ. ์น๋ธ๋ผ์ฐ์ ์์๋ ํ์ฌ ์ฐฝ์์ ๋ฌธ์๋ฅผ ๋ณผ ์ ์๋ ๋ถ๋ถ(์ ์ฒดํ๋ฉด์ด๋ผ๋ฉด ํ๋ฉด์ ์ฒด)์ ๋งํ๋ค. ๋ทฐํฌํธ ์ค์์๋ ์ง๊ธ ๋ณผ ์ ์๋ ๋ถ๋ถ์ ์๊ฐ์ ๋ทฐํฌํธ(visual viewport)๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ค๋งํธํฐ์์ ์ฌ์ฉ์๊ฐ ํ๋ฉด์ ํ๋ํ์ ๋์ ๊ฐ์ ํน์ ์ํฉ์์ ๋ ์ด์์ ๋ทฐํฌํธ์ ํฌ๊ธฐ๋ ๋ณํ์ง ์์ง๋ง ์๊ฐ์ ๋ทฐํฌํธ๋ ๋ ์์์ง๋ค.
1. ๋ฏธ๋์ด์ฟผ๋ฆฌ ์ฌ์ฉ๋ฒ
1-1) CSS ์ฝ๋ ๋ด๋ถ์์ ๋ถ๊ธฐํ๋ ๋ฐฉ๋ฒ.
@media only all and (์กฐ๊ฑด๋ฌธ) { ์คํ๋ฌธ }
1-2) CSS ์ฝ๋ ์ธ๋ถ์์ ๋ถ๊ธฐํ๋ ๋ฐฉ๋ฒ.
์กฐ๊ฑด๋ฌธ์ ๋ฐ๋ผ ๋ณ๋์ ์ธ๋ถ CSS ํ์ผ์ ์ฐธ์กฐํ์ฌ ๋ถ๊ธฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด ๋ฐฉ์์ ์ฑ๋ฅ ์ต์ ํ ์ธก๋ฉด์์ ๊ถ์ฅํ์ง ์๋๋ค.
๋ฐ์คํฌํ ๋ธ๋ผ์ฐ์ ์ฌ์ฉ์๊ฐ ์ธ์ ๋ ์กฐ๊ฑด์ ๋ณ๊ฒฝ(์๋ฅผ ๋ค๋ฉด ์ฐฝํฌ๊ธฐ๋ฅผ ์กฐ์ ํด์ ํด์๋๋ฅผ ๋ฐ๊ฟ)ํ ์ ์๊ธฐ ๋๋ฌธ์ ์น ๋ธ๋ผ์ฐ์ ๋ ์กฐ๊ฑด์ ๊ด๊ณ์์ด A.css ํ์ผ๊ณผ B.css ํ์ผ์ ํญ์ ์์ฒญํ๋ค. HTTP ์์ฒญ์ ๋ถํ์ํ๊ฒ ๋ ๋ฒ ๋ฐ์์์ผ ์ด ํ์ด์ง๋ฅผ ์ฒ์ ๋ก๋ฉํ๋ ์ฌ์ฉ์์๊ฒ๋ ์ฑ๋ฅ ์ ํ์ ์์ธ์ด ๋๋ค. CSSsํ์ผ์ ํ๋๋ก ๋ณํฉํ๊ณ , CSS ์ฝ๋ ๋ด๋ถ์์ ์กฐ๊ฑด ๋ถ๊ธฐํ๋ ๋ฐฉ์์ ๊ถ์ฅํ๋ค.
<link rel="stylesheet" media="all and (์กฐ๊ฑดA)" href="A.css" />
<link rel="stylesheet" media="all and (์กฐ๊ฑดB)" href="B.css" />
2. ๋ฏธ๋์ด์ฟผ๋ฆฌ ์ดํด๋ณด๊ธฐ.
@media
:: ๋ฏธ๋์ด ์ฟผ๋ฆฌ๊ฐ ์์๋จ์ ์ ์ธ.
2-1) ์ฐ์ฐ์ ํ์
and
|not
|only
|,
and
:: ์ฌ๋ฌ ๋ฏธ๋์ด ํน์ง๋ค์ ํ๋๋ก ๊ฒฐํฉ.not
:: ์ ์ฒด ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ๋ถ์ ํ๊ธฐ ์ํด ์ฌ์ฉ.only
:: ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ธ์ํ์ง ๋ชปํ๋ ๋ธ๋ผ์ฐ์ (์ ํํ legacy user agents)์์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์จ๊ธฐ๊ธฐ ์ํด ์ฌ์ฉ.,
(or) :: ์ฌ๋ฌ ๋ฏธ๋์ด ํน์ง๋ค์ ํ๋๋ก ๊ฒฐํฉ.
not
์ด๋only
๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฏธ๋์ด ํ์ ์ ๊ท์ ํด์ผ ํ๋ค.
๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ์ง ์๋๋ค.
[์์ ]
- ๊ฐ์ฅ ๋จ์ํ ํํ์ ๋ฏธ๋์ด์ฟผ๋ฆฌ
@media (min-width: 700px) {}
์ ๊ตฌ๋ฌธ์์ ๋ฏธ๋์ด ํ์
์ด ์๋ต๋์์ง๋ง, ๋ฏธ๋์ด ํ์
์ ๊ธฐ๋ณธ๊ฐ์ all
์ด๋ค.
์๋์ ์์์ ๊ฐ์ ๋ช ๋ น์ด๋ค.
@media only and (min-width: 700px) {}
/* ๋ชจ๋ ์ ํ์ ์ฅ์น์ด๋ฉฐ ์ต์๋๋น 700px์ผ ๋ ์คํ์ผ์ ์ ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ. */
and
์ฌ์ฉ.์๋ก์ด ๋ฏธ๋์ด ํน์ง๋ค์ ์ถ๊ฐํ ๋๋ง๋ค
and
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
@media (min-width: 700px) and (orientation: portrait) {}
/* ๋ชจ๋ ์ ํ์ ์ฅ์น์ด๋ฉฐ ์ต์ ๋๋น 700px์ด์์ด๋ฉฐ, ๋ฐฉํฅ์ด ์ธ๋ก๋ชจ๋์ผ ๋๋ง ์ ์ฉ. */
@media print and (min-width: 700px) and (orientation: landscape) {}
/* ํ๋ฆฐํธ ์ฅ์น์ด๋ฉฐ ์ต์๋๋น๊ฐ 700px์ด์์ด๋ฉฐ, ๋ฐฉํฅ์ด ๊ฐ๋ก์ผ ๋ ์ น์ฉ. */
,
์ผํ ์ฌ์ฉ.,
์ผํ๋ ๊ฐ๊ฐ ๊ฐ๋ณ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ก ์ธ์ํ๋ค.
@media (min-width: 700px), print and (orientation: landscape) {}
/* ๋ชจ๋ ์ฅ์น์์ ์ต์๋๋น 700px์ด์์ผ ๋ ์ ์ฉํ๊ฑฐ๋, ํ๋ฆฐํธ ์ฅ์น์์๋ ๊ฐ๋ก๋ฐฉํฅ์ผ ๋๋ง ์ ์ฉ. */
not
์ฌ์ฉ.not
์ ์ ์ฒด ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์์ํ๋ค. ์ฆ, not์ all and (color)๋ฅผ ํฌํจํ์ฌ ๋ถ์ ํจ.
@media not all (color) {}
/* === @media not (all and (color)){} ์ ๊ฐ์ ์๋ฏธ. */
/* ๋ชจ๋ ์์ ์ฅ์น์์ ์ด ์คํ์ผ์ ์ ์ฉํ์ง ์๊ฒ ๋ค. */
์ผํ๋ก ๋ถ๋ฆฌํ์ฌ ์ฌ์ฉํ ๋, ๋ฏธ๋์ด ๊ตฌ๋ฌธ์ ๊ฐ๋ณ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ก ์ธ์ํ๋ฏ๋ก not
์ ์ผํ ์ดํ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค.
@media not screen and (color), print and (color) {}
/* ๋ชจ๋ ์คํฌ๋ฆฐ ์์ ์ฅ์น์์ ์ ์ฉํ์ง ์๊ฑฐ๋, ํ๋ฆฐํธ ์์์ฅ์น์์ ์ ์ฉ. */
only
์ฌ์ฉ.๋ฏธ๋์ด ์ฟผ๋ฆฌ ์ง์ํ๋ ์ฌ์ฉ์ ์์ด์ ํธ๋ง ๋ฏธ๋์ด ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ์ ํด์ํ๋ผ๋ ๋ช ๋ น. ์๋ต๊ฐ๋ฅํ๋ค.
2-2) media type(๋ฏธ๋์ด์ข ๋ฅ).
all
|speech
|screen
all
:: ๊ธฐ๋ณธ๊ฐ. ๋ชจ๋ ๋ฏธ๋์ด ์ฅ์น์ ์ฌ์ฉ.print
:: ํ๋ฆฐํฐ์ ์ฌ์ฉ.screen
:: ์ปดํจํฐ ์คํฌ๋ฆฐ, ํ ๋ธ๋ฆฟ, ์ค๋งํฐํฐ ๋ฑ.speech
:: ํ์ด์ง๋ฅผ ์ฝ์ด์ฃผ๋ ํ๋ฉด ๋ญ๋ ๊ธฐ.- ๋ฏธ๋์ด ์ข
๋ฅ ์ค ํดํ๋ ๊ฒ ::
aural
,baille
,embossed
,handheld
,projection
,tty
,tv
2-3) media feature(๋ฏธ๋์ด ํน์ง).
width
|height
|min-width
|min-height
|max-width
|max-height
|device-width
|device-height
|min-device-width
|min-device-height
|max-device-width
|max-device-height
|aspect-ratio(min- / max- ์ ๋์ด ์ฌ์ฉ๊ฐ๋ฅ)
|divice-aspect-ratio (min- / max- ์ ๋์ด ์ฌ์ฉ๊ฐ๋ฅ)
|color(min- / max- ์ ๋์ด ์ฌ์ฉ๊ฐ๋ฅ)
|color-index (min- / max- ์ ๋์ด ์ฌ์ฉ๊ฐ๋ฅ)
|monochrome (min- / max- ์ ๋์ด ์ฌ์ฉ๊ฐ๋ฅ)
|resoluction (min- / max- ์ ๋์ด ์ฌ์ฉ๊ฐ๋ฅ)
|scan
|grid
width
:: ํ๋ฉด ์์ญ ๋๋น(๋ธ๋ผ์ฐ์ ์ฐฝ ๊ฐ์)
@media screen and (min-width: 500px) and (max-width: 800px) {}
/* ์คํฌ๋ฆฐ ์ฅ์น ์ต์ ํ๋ฉด์ด 500px๋ณด๋ค ํฌ๊ณ 800px๋ณด๋ค ์์ ๋ ์คํ์ผ ์ ์ฉ. */
height
:: ํ๋ฉด ์์ญ ๋์ดdevice-width
:: ์ถ๋ ฅ ์ฅ์น์ ๋๋น. ( ์ปดํจํฐ ์คํฌ๋ฆฐ ๊ฐ์)
@media screen and (max-device-width: 450px) {}
/* ์ฅ์น ๋๋น๊ฐ 450px๋ณด๋ค ์์ ๋ ์คํ์ผ ์ ์ฉ. */
device-height
:: ์ถ๋ ฅ ์ฅ์น์ ๋์ดaspect-ratio
:: ํ๋ฉด ์์ญ์ ๊ฐ๋ก ์ธ๋ก ๋น ๊ธฐํธ/
๋ฅผ ์ฌ์ฉํ์ฌ, ์์๋ ์ํ ํฝ์ ๋น์จ, ๋ค์๋ ์์ง ํฝ์ ๋น์จ (์์์ด๋ฉฐ ์ ์).
@media screen and (min-aspect-ratio: 1/1) {}
/*
* ๊ฐ๋ก ํ๋ฉด ๋น๊ฐ 1:1 ์ด์์ผ ๋ ์ ์ฉ.
์ฆ, ํ๋ฉด์ด ์ง์ฌ๊ฐ์ด๋ ์ธ๋ก์ผ ๋๋ง ์ ์ฉ.
*/
device-aspect-ratio
:: ์ถ๋ ฅ ์ฅ์น์ ๊ฐ๋ก์ธ๋ก ๋น.(์ํํฝ์ ๋น / ์์งํฝ์ ๋น)
@media screen and (device-aspect-ratio: 16/9) {}
/*
* ์ฅ์น ๊ฐ๋ก ์ธ๋ก๋น๊ฐ 16:9์ผ ๋ ์ ์ฉ.
*/
color
:: ์ถ๋ ฅ ์ฅใ ์น์ ์์ ๊ตฌ์ฑ์์ ๋น ๋นํธ ์ (์ฅ์น๊ฐ ์๊น ์ฅ์น๊ฐ ์๋๋ฉด ๊ฐ์ 0)`
@media all and (color) {}
/* ๋ชจ๋ ์์ ์ฅ์น์ ์ ์ฉ. */
@media all and (min-color:4) {}
/* ์์ ๊ตฌ์ฑ์์๋น ์ต์ 4๋นํธ๋ฅผ ์ง๋ ์ฅ์น์ ์ ์ฉ. */
color-index
:: ์ฅ์น๊ฐ ํ์ํ ์ ์๋ ์์ ์.
@media all and (min-color-index: 256) {}
/* ์ต์ 256 ์์์ ์ง๋ ๋ชจ๋ ์ฅ์น์ ์ ์ฉ. */
grid
:: ์ถ๋ ฅ ์ฅ์น๊ฐ ๊ทธ๋ฆฌ๋ ์ฅ์น ๋๋ ๋นํธ๋ฑ ์ฅ์น๋์ ๋ฐ๋ผ ๊ฒฐ์ .์ฅ์น๊ฐ ๊ทธ๋ฆฌ๋ ๊ธฐ๋ฐ์ด๋ฉด ๊ฐ์ 1, ๊ทธ๋ ์ง ์์ผ๋ฉด 0
monochrome
:: ํ๋ฐฑ(ํ์ํค)์ฅ์น์ ์์ ๋น ๋นํธ ์. ์ฅ์น๊ฐ ํ๋ฐฑ์ด ์๋๋ฉด ๊ฐ์ 0
@media all and (monochrome) {}
/* ๋ชจ๋ ํ๋ฐฑ์ฅ์น์ ์ ์ฉ. */
orientation
:: ํ๋ฉด์ด ๊ฐ๋ก๋ชจ๋ ์ธ์ง, ์ธ๋ก๋ชจ๋ ์ธ์ง ์ง์ .
@media all and (orientation: portrait) {}
/* ์ค์ง ์ธ๋ก ๋ฐฉํฅ์์๋ง ์ ์ฉ. */
resolution
:: ์ถ๋ ฅ ์ฅ์น์ ํด์๋ ํด์๋๋ dpi(dots per inch)๋, dpcm(dots per cintimeter)๋ก ์ง์ .
@media screen and (min-resolution: 300dpi) {}
/* ์ต์ 300dpi์ด์ ํด์๋๋ฅผ ์ง๋ ์ฅ์น์ ์ ์ฉ. */
'๐ฉ๐ปโ๐ปSTUDY > CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] padding position ์์ญ (0) | 2020.07.07 |
---|---|
[CSS] height: 100% VS height: auto (0) | 2020.07.02 |
[CSS] opacity / visibility / display ์ฐจ์ด์ (0) | 2020.03.31 |
[CSS] ๋ฐ์ํ ์ด๋ฏธ์ง ๋ฃ๊ธฐ (0) | 2020.03.31 |
[CSS] transition, transition-delay, transform, calc vendor prefix (0) | 2020.02.11 |