티스토리 뷰
▶반응형 웹을 위한 미디어 쿼리
미디어 쿼리를 사용하면 콘텐츠 자체를 변경하지 않고 장치의 해상도, 뷰포트의 너비, 미디어의 유형 같은 조건에 따라 스타일을 지정할 수 있습니다.
데스크톱과 모바일, 태블릿 등 화면의 크기에 따라 다른 스타일을 지정하거나 인쇄, 음성 장치 등의 조건에 따라 다른 스타일을 적용할 수 있습니다.
미디어 쿼리 작성은 크게 CSS 파일 내부에 작성하거나 <link>나 <style>에 media 속성으로 작성하는 방식으로 나뉩니다.
각 스타일은 media 속성에 작성된 조건에 해당될 때 적용됩니다.
하지만 css 파일(스타일 시트)은 조건의 참, 거짓 여부와는 상관없이 다운로드 되니, 이 점을 주의해야 합니다.
<link
rel="stylesheet"
media="screen (min-width: 300px)"
href="main.css" />
<style media="screen (min-width: 300px)">
/*...*/
</style>
미디어 쿼리는 미디어 타입과 미디어 기능을 기준으로 동작합니다.
두 조건이 모두 일치할 때 해당 코드가 동작합니다.
미디어 타입에는 모든 장치(all), 인쇄미디어(print), 화면(screen) 등이 존재합니다.
/* 미디어 타입이 screen일 때 적용됩니다. */
@media screen {
/*...*/
}
미디어 기능(feature)은 width나 height 등 장치의 환경 및 특성을 나타냅니다.
이 값은 미디어 타입과 다르게 괄호로 묶어서 나타냅니다.
min-과 max-를 이용해 최소, 최대 조건을 명시할 수도 있습니다.
max이면 "이하"일 때, min이면 "이상"일 때 스타일을 적용합니다.
/* 장치의 너비가 700px 이상일 때 적용됩니다. */
@media (min-width: 700px) {
/*...*/
}
모던 브라우저에서는 >, =, < 등의 비교 연산자를 사용하여 min, max를 이용한 조건과 동일하게 작성할 수 있습니다.
범위 연산자를 사용하면 좀 더 직관적으로 작성할 수 있다는 장점이 있지만 아직 많은 브라우저에서 지원되지 않아 지원 여부를 확인한 뒤 사용해야 합니다.
/* 장치의 너비가 700px 이상일 때 적용됩니다. */
@media (width >= 700px) {
/*...*/
}
미디어 타입과 기능은 ',', and, not, only 등의 연산자로 이어서 작성합니다.
/*
* 생략 시 모든 타입의 장치를 의미합니다.
* 700px 이상일 때 그리고 뷰포트의 방향이 가로일 때 해당 조건을 실행합니다.
*/
@media (min-width: 700px) and (orientation: landscape) {
div {
border: 1px solid #ccc;
}
}
여기까지 미디어 쿼리에 대해 알아보았습니다 :)
'프론트엔드 > CSS' 카테고리의 다른 글
[CSS] ⑧ CSS 화면 중앙 배치 (0) | 2022.08.17 |
---|---|
[CSS] ⑦ 접근성(Accessibility) (0) | 2022.07.14 |
[CSS] ⑤ flex를 이용한 레이아웃 만들어 보기 (0) | 2022.07.13 |
[CSS] ④ 박스 모델과 여백 상쇄 (0) | 2022.07.13 |
[CSS] ③ CSS 우선순위와 명시도(Specificity) (0) | 2022.07.06 |
- Total
- Today
- Yesterday
- 프론트엔드 기초
- 머신러닝
- Python
- 인프런
- 프론트엔드
- 리액트
- react-query
- react
- 타입스크립트
- 딥러닝
- 데이터분석
- 자바
- HTML
- JSP
- CSS
- 디프만
- 프로젝트 회고
- styled-components
- 파이썬
- 리액트 훅
- 자바스크립트
- 프론트엔드 공부
- jest
- rtl
- testing
- TypeScript
- 스타일 컴포넌트 styled-components
- 자바스크립트 기초
- frontend
- next.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |