๐Ÿ“ŒLanguage/HTML & CSS

๋ฏธ๋””์–ด์ฟผ๋ฆฌ์™€ ๋ฐ˜์‘ํ˜• ์›น

hellohailie 2022. 4. 20. 00:02

๋ฏธ๋””์–ด์ฟผ๋ฆฌ ์†Œ๊ฐœ

๋ฏธ๋””์–ดํ€ด๋ฆฌ(Media Queries)๋Š” ๊ฐ ๋ฏธ๋””์–ด ๋งค์ฒด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์Šคํƒ€์ผ(css style)์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. 

๋ฏธ๋””์–ด์ฟผ๋ฆฌ๋Š” ๋™์ผํ•œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์˜ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ตœ์ ํ™”๋œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

@media(at media)

๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋Š” CSS2 Media Types์„ ํ™•์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ ์–ธ ๋ฐฉ๋ฒ•์€ ๋™์ผํ•˜๋‹ค.

 

@media mediaqueries { /* style rules  */ }

@media ๋กœ ์‹œ์ž‘ํ•˜๋ฉฐ, ์ด ํ‚ค์›Œ๋“œ๋Š” ์ด์ œ๋ถ€ํ„ฐ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค ๋ผ๋Š” ๋œป์ด๋‹ค.

๊ทธ ๋’ค์— ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ(์œ„ ์ฝ”๋“œ์˜ mediaqueries) ์ด ๋‚˜์˜ค๊ณ  ์ด์–ด์„œ ์ค‘๊ด„ํ˜ธ( { } )๋ฅผ ์ด์šฉํ•ด์„œ ์Šคํƒ€์ผ ๊ทœ์น™์ด ๋“ค์–ด๊ฐ„๋‹ค.

๋ฏธ๋””์–ด ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ์€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ‰๊ฐ€๋˜๋ฉฐ ์ฐธ์ด๋ฉด ๋’ค์— ๋‚˜์˜ค๋Š” ์Šคํƒ€์ผ ๊ทœ์น™์ด ์ ์šฉ๋˜๊ณ , ๊ฑฐ์ง“์ด๋ฉด ๋ฌด์‹œ๋œ๋‹ค.

๋ฏธ๋””์–ด ์ฟผ๋ฆฌ ๊ตฌ๋ฌธ์€ ๋ฏธ๋””์–ด ํƒ€์ž…(Media Types)๊ณผ ๋ฏธ๋””์–ด ํŠน์„ฑ(Media Features)์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 


๋ฏธ๋””์–ด ํƒ€์ž…

  • all, print, screen

 

ํ™”๋ฉด์„ ์ถœ๋ ฅํ•˜๋Š” ๋””์Šคํ”Œ๋ ˆ์ด๊ฐ€ ์žˆ๋Š” ๋ฏธ๋””์–ด๋“ค์€ ์ „๋ถ€ screen์— ์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์‹ค์ ์œผ๋กœ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ๋ฏธ๋””์–ด๋“ค์€

์ „๋ถ€ ์—ฌ๊ธฐ์— ํ•ด๋‹น์ด ๋œ๋‹ค. print ํƒ€์ž…๋„ ๊ฐ„ํ˜น ์‚ฌ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค. 

all ํƒ€์ž…์€ ๋ชจ๋“  ๋ฏธ๋””์–ด์— ์ ์šฉ๋˜๋Š” ํƒ€์ž…์ด์ง€๋งŒ, ๋ฏธ๋””์–ด๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์šฉ๋„๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

 

๋ฏธ๋””์–ด ํŠน์„ฑ

  • width, orientation

width๋Š” ๋ทฐํฌํŠธ์˜ ๋„ˆ๋น„, ์ฆ‰ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ๋„ˆ๋น„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.(์Šคํฌ๋ฆฐ์˜ ํฌ๊ธฐ x)

orientation์€ ๋ฏธ๋””์–ด๊ฐ€ ์„ธ๋กœ๋ชจ๋“œ์ธ์ง€ ๊ฐ€๋กœ๋ชจ๋“œ์ธ์ง€๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. 

๋ฏธ๋””์–ด ์ฟผ๋ฆฌ์—์„œ๋Š” ์ด ๊ตฌ๋ถ„์„ width์™€ height ํŠน์„ฑ์˜ ๊ฐ’์„ ๋น„๊ตํ•ด์„œ height๊ฐ€ width๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋ฉด ์„ธ๋กœ๋ชจ๋“œ

๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ์—๋Š” ๊ฐ€๋กœ๋ชจ๋“œ๋ผ๊ณ  ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค. ์„ธ๋กœ๋ชจ๋“œ์—์„œ๋Š” portrait, ๊ฐ€๋กœ๋ชจ๋“œ์—์„œ๋Š” landscape ํ‚ค์›Œ๋“œ์™€ ๋งค์นญ์ด ๋œ๋‹ค.

 

 


๋ฏธ๋””์–ด ์ฟผ๋ฆฌ Syntax

 

media_query_list
 : S* [media_query [ ',' S* media_query ]* ]?
 ;
media_query
 : [ONLY | NOT]? S* media_type S* [ AND S* expression ]*
 | expression [ AND S* expression ]*
 ;
expression
 : '(' S* media_feature S* [ ':' S* expr ]? ')' S*
 ;

 

 

์ฐธ๊ณ ๋กœ Syntax๋Š” ์ „๋ถ€ ์ดํ•ดํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ผ๋ถ€ ๊ธฐํ˜ธ๋Š” ์•Œ์•„๋‘์ž.

  • [ a ] : a๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ  ๋‚˜์˜ค์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • a | b : a ๋˜๋Š” b ๋‘˜ ์ค‘์— ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค.
    "|"๋Š” ํŒŒ์ดํ”„ ๋ผ์ธ ๊ธฐํ˜ธ๋กœ ํ‚ค๋ณด๋“œ์˜ ์—ญ์Šฌ๋ž˜์‹œ(\) ํ‚ค๋ฅผ Shift ํ‚ค๋ฅผ ๋ˆ„๋ฅธ ์ฑ„๋กœ ๋ˆ„๋ฅด๋ฉด ๋‚˜์˜จ๋‹ค.
  • a? :  a๊ฐ€ 0๋ฒˆ ๋‚˜์˜ค๊ฑฐ๋‚˜ 1๋ฒˆ๋งŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Œ
  • a* : a๊ฐ€ 0๋ฒˆ ๋‚˜์˜ค๊ฑฐ๋‚˜ ๊ทธ ์ด์ƒ ๊ณ„์† ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Œ
  • media_type : all, screen, print ๋“ฑ ๋ช…์„ธ์— ์ •์˜๋œ ๋ฏธ๋””์–ด ํƒ€์ž…
  • media_feature : width, orientation ๋“ฑ ๋ช…์„ธ์— ์ •์˜๋œ ๋ฏธ๋””์–ด ํŠน์„ฑ
  • Sํ•˜๊ณ  *(๋ณ„ํ‘œ)๋Š” ๊ณต๋ฐฑ์— ๊ด€๋ จ๋œ ํ‘œ์‹œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ์—†๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. 

 

์œ„ Syntax๋ฅผ ์š”์•ฝํ•˜๋ฉด

media_query_list
    : ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์‰ผํ‘œ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌ๋ถ„ํ•œ๋‹ค.

media_query
    : A ํ˜•ํƒœ - ๋ฏธ๋””์–ด ํƒ€์ž…์— and ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฏธ๋””์–ด ํ‘œํ˜„์‹์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค.
                    ๋ฏธ๋””์–ด ํƒ€์žŽ ์•ž์—๋Š” only ๋˜๋Š” not ํ‚ค์›Œ๋“œ๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.(ํ‘œํ˜„์‹ ์•ž์—๋Š” ์‚ฌ์šฉ๋ถˆ๊ฐ€)
                    ๋ฏธ๋””์–ด ํ‘œํ˜„์‹์€ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋””์–ด ํƒ€์ž… ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

    : B ํ˜•ํƒœ - ๋ฏธ๋””์–ด ํƒ€์ž… ์—†์ด ๋ฏธ๋””์–ด ํ‘œํ˜„์‹์ด ๋ฐ”๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค.(๋ฏธ๋””์–ด ํƒ€์ž…์ด ๋ช…์‹œ๋˜์ง€ ์•Š์œผ๋ฉด all๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.)
                   ๋ฏธ๋””์–ด ํ‘œํ˜„์‹์€ and ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๊ณ„์†ํ•ด์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

expression
    : ๋ฏธ๋””์–ด ํ‘œํ˜„์‹์€ ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์•ผ ํ•˜๋ฉฐ, ํŠน์„ฑ ์ด๋ฆ„๊ณผ ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ด๋ฆ„๊ณผ ๊ฐ’์€ : ๊ธฐํ˜ธ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.
      ๋˜, ๊ฐ’์ด ์—†์ด ํŠน์„ฑ ์ด๋ฆ„๋งŒ์œผ๋กœ๋„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

ํŠน์ง• 1. ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

ํŠน์ง• 2. ๋ฏธ๋””์–ด ํƒ€์ž… ๋˜๋Š” ํ‘œํ˜„์‹ ๋‹จ๋…์œผ๋กœ๋„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

ํŠน์ง• 3. ํ‘œํ˜„์‹์€ ๊ฐ’์ด ์—†์ด ํŠน์„ฑ ์ด๋ฆ„๋งŒ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 


 

min-/max- ์ ‘๋‘์‚ฌ /ํ”„๋ฆฌํ”ฝ์Šค/

๋ฏธ๋””์–ด ํŠน์„ฑ์€ ์ด๋ฆ„ ์•ž์— min- ๋˜๋Š” max- ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฐ˜์‘ํ˜• ์‚ฌ์ดํŠธ๋ฅผ ์ œ์ž‘ํ•  ๋•Œ๋Š” ๋ณดํ†ต ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•œ๋‹ค. (์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ด์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„ ํšจ์œจ์ ์ด์ง€ ๋ชปํ•˜๋‹ˆ๊นŒ)

์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ˜์‘ํ˜• ์‚ฌ์ดํŠธ๋Š” width ํŠน์„ฑ์„ ์ด์šฉํ•˜๋Š”๋ฐ, ์ ‘๋‘์‚ฌ ์—†์ด width: 00px ์ด๋ผ๊ณ  ํ•˜๊ฒŒ ์„ ์–ธํ•˜๋ฉด

์ •ํ™•ํžˆ ๋ทฐํฌํŠธ์˜ ํฌ๊ธฐ๊ฐ€ 00px ์—์„œ๋งŒ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ๋“ค์„ ๋Œ€์‘ํ•˜๊ธฐ ํž˜๋“ค๋‹ค.

 

๊ทธ๋ž˜์„œ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๊ฒŒ ๋˜๋ฉด ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ˜• ์‚ฌ์ดํŠธ๋ฅผ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

**์ฐธ๊ณ **

orientation, grid, scan ์—๋Š” ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค. orientation์€ ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

๋ทฐํฌํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ์„ธ๋กœ๋กœ ๊ธด ํ˜•ํƒœ์ด๋ฉด Portrait๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ , ๊ฐ€๋กœ๋กœ ๊ธด ํ˜•ํƒœ์ด๋ฉด landscape ํ‚ค์›Œ๋“œ๊ฐ€ ์ ์šฉ๋œ๋‹ค. 

 

 

 

media_query
 : [ONLY | NOT]? S* media_type S* [ AND S* expression ]*
 | expression [ AND S* expression ]*

 

์˜ˆ์ œ ์ฝ”๋“œ

 

@media screen { ... }
    : ๋ฏธ๋””์–ด ํƒ€์ž…์ด screen์ด๋ฉด ์ ์šฉ

@media screen and (min-width: 768px) { ... }
    : ๋ฏธ๋””์–ด ํƒ€์ž…์ด screen์ด๊ณ  width๊ฐ€ 768px ์ด์ƒ์ด๋ฉด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฑฐ์ง“.

@media (min-width: 768px) and (max-width: 1024px) { ... }
    : and๋Š” ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ํ‘œํ˜„์‹์ด ์ฐธ์ด๋ฉด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.(and ํ‚ค์›Œ๋“œ๋Š” ์—ฐ๊ฒฐ๋œ ๋ถ€๋ถ„์ด ๋ชจ๋‘ ์ฐธ์ด์–ด์•ผ ์ ์šฉ๋œ๋‹ค.)

(โฌ†๏ธ์œ„์ฒ˜๋Ÿผ ๋ฏธ๋””์–ด ํƒ€์ž…์ด ๋ช…์‹œ๋˜์ง€ ์•Š์œผ๋ฉด all์ด๋ผ๊ณ  ํ•ด์„ํ•œ๋‹ค. )

@media (color-index)
    : ๋ฏธ๋””์–ด ์žฅ์น˜๊ฐ€ color-index๋ฅผ ์ง€์›ํ•˜๋ฉด ์ ์šฉ

@media screen and (min-width: 768px), screen and (orientation: portrait), ...
    : ์‰ผํ‘œ๋กœ ์—ฐ๊ฒฐ๋œ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ด๋ฉด ์ ์šฉ.( and ํ‚ค์›Œ๋“œ์™€ ๋ฐ˜๋Œ€๋ผ๊ณ  ์ƒ๊ฐํ•˜์ž.)

@media not screen and (min-width: 768px)
    : not ํ‚ค์›Œ๋“œ๋Š” ํ•˜๋‚˜์˜ media_query ์ „์ฒด๋ฅผ ๋ถ€์ •.
    : (not screen) and (min-width: 768px) ์ž˜๋ชป๋œ ํ•ด์„!
    : not (screen and (min-width: 768px)) ์˜ฌ๋ฐ”๋ฅธ ํ•ด์„! /์ „์ฒด๋ฅผ ๋ฌถ์ž!!/
    : @media not screen and (min-width: 768px), print
       ์ฒซ ๋ฒˆ์งธ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ์—๋งŒ not ํ‚ค์›Œ๋“œ๊ฐ€ ์ ์šฉ๋˜๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ(print)์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค.

 

**์ฐธ๊ณ  only ํ‚ค์›Œ๋“œ๋ฅผ ์“ฐ๋‚˜ ์•ˆ์“ฐ๋‚˜ ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™”์—†๋‹ค. (์ด์ „ ๊ธฐ์ˆ )

 


 

๋ฏธ๋””์–ด ์ฟผ๋ฆฌ ์„ ์–ธํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•

 

์ฐธ๊ณ ๋กœ @media๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉฐ ๋‚˜๋จธ์ง€ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค.

@media screen and (color)
    : CSS ํŒŒ์ผ ๋‚ด๋ถ€์— ๋˜๋Š” HTML์˜ <style> ํƒœ๊ทธ ๋‚ด๋ถ€์— ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ.

 

<link rel="stylesheet" media="screen and (color)" href="example.css">
   : <link> ํƒœ๊ทธ์˜ media ์†์„ฑ์— ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์„ ์–ธ. ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๊ฐ€ ์ฐธ์ด๋ฉด ๋’ค์— css ํŒŒ์ผ ๊ทœ์น™์ด ์ ์šฉ. (์ž˜ ์‚ฌ์šฉ์€ ์•ˆ๋œ๋‹ค.)

@import url(example.css) screen and (color);
    : CSS ํŒŒ์ผ ๋‚ด๋ถ€์— ๋˜๋Š” <style> ํƒœ๊ทธ ๋‚ด๋ถ€์— ์‚ฌ์šฉ๊ฐ€๋Šฅ. @import๋ฌธ ๋’ค์— ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์„ ์–ธ. (์ž˜ ์‚ฌ์šฉ์€ ์•ˆ๋œ๋‹ค.)

 

 


 

 

https://www.w3.org/TR/mediaqueries-4/#mq-min-max

 

Media Queries Level 4

Abstract Media Queries allow authors to test and query values or features of the user agent or display device, independent of the document being rendered. They are used in the CSS @media rule to conditionally apply styles to a document, and in various othe

www.w3.org