-
[css] 반응형 웹codeStates front-end/Css 2023. 3. 16. 20:08반응형
목차
📌 반응형 웹
여러 장치의 다양한 특성에 대응하는 하나의 웹 문서 또는 사이트로써 브라우저의 크기에 실시간 반응하여
크기에 따라 레이아웃이 변하는 웹 사이트를 의미한다.
📍 리플로우(Reflow)와 리페인트(Repaint
화면을 늘리거나 줄이는 등 크기를 조절하거나, 다른 사이트로 이동을 하는 등 화면에 있던 요소들의 크기가 바뀌게 되는데,
화면에 나타나는 모습을 바꾸기 위해 모든 요소의 위치와 크기를 다시 계산하고, 다시 그려야 한다.
웹 인터렉션으로 인해 렌더링 과정의 레이아웃을 반복해 수행하는 것을 리플로우, 페인트 과정을 반복 수행하는 것을 리페인트라 한다.
🔗 리플로우와 리페인트의 최적화
말 그대로 다시 필하고 다시 플로우를 정해야하는데, 이런 과정은 최소하하는 것이 좋다.
JS + CSS 조합한 애니메이션이 많거나, 레이아웃 변화가 많은 요소 같은 영향을 주는 노드를 줄입니다.
리플로우의 원인
- 윈도우 리사이징 (뷰포트 변화는 Global Layout에 영향)
- 폰트의 변화 (height계산에 영향을 주므로 Global Layout에 영향)
- 스타일 추가 또는 제거(레이아웃을 바꾸므로)
- 내용 변화 (인풋박스에 텍스트 입력 등..)
- :hover와 같은 CSS Pseudo Class
(CSS: The Definitive Guide: The Definitive Guide 55p에서, hover할 시 나타나는 변화로 인한 우려가 생긴다는 의미인 듯 합니다.) - 클래스 Attribute의 동적 변화
- JS를 통한 DOM 동적 변화
- 엘리먼트에 대한 offsetWidth / offsetHeight (화면에서 보여지는 좌표) 계산시
- 스타일 Attribute 동적변화
리플로우가 일어나는 대표적인 css 속성
position width height left top right bottom margin padding border border-width clear display float font-family font-size font-weight line-height min-height overflow text-align vertical-align ... 리페인트가 일어나는 대표적인 속성
background background-image background-position background-repeat background-size border-radius border-style box-shadow color line-style outline clear display float font-family font-size font-weight outline-color visibility ... 📍 미디어 쿼리
미디어 타입을 구체적인 조건으로 필요한 스타일을 적용
🔗 미디어 쿼리 적용법
1. <head> 태그 안에 <link> 태그를 위치 시킨다.
<link href="css파일이름.css" media="screen and (min-width: 400px) and (max-width: 1000px)" rel="stylesheet">
2. 미디어 속성을 사용해 조건을 지정한다.
<style type="text/css" media="screen and (min-width: 400px) and (max-width: 1000px)"> /* 여기 css를 작성합니다. */ </style>
3. css 파일 혹은 태그 안에서 직접 미디어 쿼리 작성
미디어 쿼리 구문
@media 미디어 타입 (조건(너비 및 높이)) { (CSS 입력하는 부분) } --예제 @media screen (max-width: 400px) { body { color: red; } }
- 미디어 타입 : 코드가 어떤 미디어를 위한 것인지 브라우저에 알려줍니다.
- 조건(너비 및 높이) : 지정한 창의 너비나 높이를 기준으로 기준이 만족되면 스타일이 적용되고, 만족되지 않으면 적용되지 않습니다.
- CSS 입력하는 부분 : 조건문을 통과하고, 미디어 타입이 올바른 경우 스타일이 적용됩니다.
🔗 미디어 타입(Media Type)
지정할 수 있는 미디어 타입
- all : 모든 미디어 타입
- print : 프린터
- screen : 컴퓨터 화면
- speech : 스크린 리더
조건(너비 및 높이)
반응형 디자인을 만들기 위해 가장 많이 상요하는 기능 : 뷰포트 너비 min-width와 max-width, width
//width(혹은 height)는 브라우저의 창 크기 @media screen and (width: 600px) { body { color : red; } }
방향성
세로 모드인지 가로 모드인지 검사하여 CSS 스타일응 주고 싶은 경우: orientation
@media (orientation: landscape) { body { color: rebeccapurple; } }
🔗 복잡한 미디어 쿼리
논리곱(and) 미디어 쿼리
// min- 혹은 max- 접두사를 붙이게 되면 최솟값인지 최댓값인지 표시 @media screen and (min-width: 400px) and (orientation: landscape) { body { color: blue; } }
논리합(and) 미디어 쿼리
@media screen and (min-width: 600px), screen and (orientation: landscape) { body { color: blue; } }
부정(not) 미디어 쿼리
@media not all and (orientation: landscape) { body { color: blue; } }
📍 <실습> 반응형 웹 수도코드
@media screen and (min-width: 800px ), screen and (orientation: landscape ) { .main-title, .sub-title { color: #F6D9C1; } } @media not all and (orientation: landscape ) { .main-title, .sub-title { color: #5f88e3; } } @media screen and (min-width: 1000px) { body { background: #f4ac71; } .display-box { display: flex; flex-wrap: wrap; justify-content: center; width: 40%; } } @media screen and (max-width: 1000px) { body { background: #bababa; } .display-box { background: red; display: grid; place-items: center; } }
실행결과
👉🏻 👉🏻 👉🏻
반응형'codeStates front-end > Css' 카테고리의 다른 글
[css] css 애니메이션 (0) 2023.03.17 [css] Selector (0) 2023.01.04 [css] 박스를 구성하는 요소 (0) 2023.01.04 [css] 박스 모델 (0) 2023.01.04 [css] css 속성 (0) 2023.01.04