# 반응형
반응형이란?
하나의 웹사이트에서 PC, Tablet, Mobile 등 접속하는 기기의 화면 크기에 맞게 사이트가 자동으로 반응하는 기법
적응형이란?
접속하는 기기에 따라 PC용 웹사이트, 테블릿/모바일용 웹사이트를 보여주는 기법
#HTML
반응형 페이지를 만들기 위한 메타 태그
viewport meta 태그를 추가하여 페이지가 호출될 때 보이는 화면을 어떻게 계산해서 보여줄지 정의
name : 메타태그 중 viewport를 사용하겠다고 선언
content : viewport 가 가진 content 값 지정하여 사용
- width : 브라우저에게 페이지의 가로 너비 계산하는 방법 알려줌, device-width 지정 시 접속하는 기기의 브라우저 너비에 맞게 페이지 맞춰줌
- initial-scale : 최초 화면 확대 값, 1.0 으로 두어 페이지 확대하지 않고 1배율로 보겠다고 정의
핸드폰으로 PC 전용 사이트에 들어갔을 때
페이지가 애매하게 확대되어 보이는 경우
-> viewport device-width 설정하지 않은 경우, 페이지 내 모든 요소를 축소해서 한 눈에 보여주려고 함
반응형 이미지 처리
picture : picture 태그를 사용하여 의도한 viewport 너비에 원하는 이미지를 넣을 수 있음
picture 태그의 자식 요소
- source : media 속성으로 조건을 넣어 화면 크기에 맞는 이미지를 불러
- img : 조건 충족하지 못할시 img 태그가 불러와짐
<!-- doctype 선언 -->
<!DOCTYPE html>
<!-- html 선언 -->
<html lang="ko">
<head>
<meta charset="UTF-8" />
<!-- 반응형을 위한 viewport meta 태그 선언 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>반응형 실습</title>
</head>
<body>
<picture>
<!-- 최대 가로 너비가 768일 때 해당 image를 사용하겠다는 의미 -->
<source
media="(max-width: 768px)"
srcset="https://via.placeholder.com/200x200?text=mobile"
/>
<img
src="https://via.placeholder.com/200x200?text=pc"
alt="PC용 이미지"
/>
</picture>
</body>
</html>
위의 코드에서 브라우저의 크기를 조절해보면 768px를 기준으로 다르게 보인다
이렇게 브라우저 크기와 기기 상황에 따라 다르게 보이는 것이 반응형이다
# CSS
미디어 쿼리(Media Query) 란?
기기의 유형과 어떤 특성이나 수치에 따라 스타일 수정할 수 있다
@media + 기기유형 + 연산자 + (규칙) { ..스타일... }
@media 로 시작
기기 유형 all : 모든 장치, print : 인쇄 결과물 및 출력 미리보기, screen : 화면
and 연산자를 통해 조건을 계속 추가할 수 있음
# CSS 호출 방법
link 태그를 사용하면 원하는 유형과 조건에 따라 스타일 파일을 불러올 수 있다
# CSS 반응형 작업 시 주의사항
1. 레이아웃의 고정크기 사용 지양
width 값을 고정하면 반응형 매구간마다 고정값을 변경해야 하는 불편함 발생
max-width를 사용한 최대 너비를 사용하자
heigth 역시 값을 고정하면 유동적으로 변하는 높이에 대응할 수 없다
min-height 를 사용한 최소 높이를 적극 활용하자
2. 인라인 스타일은 반응형을 처리할 수 없다
인라인 스타일의 사용을 지양하자
<!-- doctype 선언 -->
<!DOCTYPE html>
<!-- html 선언 -->
<html lang="ko">
<head>
<meta charset="UTF-8" />
<!-- 반응형을 위한 viewport meta 태그 선언 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>반응형 실습</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div>박스입니다</div>
</body>
</html>
위의 HTML 코드에 반응형 CSS를 적용해보겠다
div {
font-size: 20px;
background-color: #ddd;
}
/*
반응형 CSS 기본 틀
@media 기기유형 연산자 (조건) {
....
} */
/*너비가 1024px 이하일 때 적용되도록 설정한 반응형 CSS*/
@media all and (max-width: 1024px) {
div {
font-size: 30px;
background-color: blueviolet;
}
}
페이지의 크기가 변하니까 CSS도 변하는 것을 확인할 수 있다
여러 개의 조건을 넣어줄 때는 and 연산자를 사용해서 설정해주면 된다
/*768px 이상 ~ 1024px 이하인 구간에서
적용되는 반응형 CSS */
@media all and (min-width: 768px) and (max-width: 1024px) {
div {
font-size: 50px;
background-color: blue;
}
}
반응형 CSS를 따로 파일로 분리하는 경우 HTML 코드에서 link 태그를 사용해서 지정해 줄 수 있다
<link rel="stylesheet" href="media.css" media="(max-width : 1024px)" />
반응형 CSS를 한 파일 내에서 볼 수 있기 때문에 하나의 파일로 분리하는 것을 추천!
# 마무리
내가 쓰는 코드가 어떤 브라우저의 버전 몇까지 지원하는지 알고 싶을 때?
사이트를 활용하자
HTML, CSS 관련해서 헷갈리거나 궁금한 개념이 있다면 MDN 사이트를 적극 활용하자
https://developer.mozilla.org/ko/
모르는 것이 생기면 한글 검색보다는 영문 검색을 해보자
#새로 알게 된 점
반응형 CSS를 어떻게 사용해야 하는지에 대해서 배울 수 있었다
HTML과 CSS 강의를 마무리하면서 꿀팁들과 유용하게 활용할 수 있는 사이트들을 알게 되어 유익한 시간이었다
앞으로 실습과 해당 사이트들을 적극 활용해서 개발 역량을 기를 수 있도록 노력할 것이다
다가올 자바스크립트 강의도 기초부터 탄탄하게 다시 공부하여 프론트엔드 개발 역량을 기르자
'TIL > 프로그래머스 데브코스' 카테고리의 다른 글
클라우딩 어플리케이션 엔지니어링 TIL Day 5 (2) (0) | 2024.01.04 |
---|---|
클라우딩 어플리케이션 엔지니어링 TIL Day 7 (1) | 2024.01.03 |
클라우딩 어플리케이션 엔지니어링 TIL Day 5 (1) (1) | 2023.12.29 |
클라우딩 어플리케이션 엔지니어링 TIL Day 4 (2) (1) | 2023.12.22 |
클라우딩 어플리케이션 엔지니어링 TIL Day 4 (1) (0) | 2023.12.22 |