HTML 4일차
반응형 웹 사이트
반응형 웹
반응형 웹 디자인
- 다양한 기기로 웹 사이트에 접속 ⇒ 화면의 크기가 달라서 보기 어려움
- 화면 요소들을 화면 크기에 맞게 재배치하고 각 요소의 표시 방법만 바꿔 사이트 구현
- 장점
- 모든 스마트 기기에서 접속 가능
- 가로 모드에 맞추어 레이아웃 변경 가능
- 사이트 유지 / 관리 용이
- 단점
- 하위 버전의 브라우저 사용자 고려할 수 없음
- 뷰포트(viewport)
- 접속한 기기 화면에 맞추어 확대하거나 축소해서 표시
-
지정방법 :
<head>
태그 안에 작성속성 설명 사용 가능한 값 기본 값 width 뷰포트 너비 device-width or 크기 브라우저 기본 값 height 뷰포트 높이 device-height or 크기 브라우저 기본 값 user-scalable 확대/축소 가능 여부 yes or no yes initial-scale 초기 확대 / 축소 값 1 ~ 10 1 minimum-scale 최소 확대 / 축소 값 0 ~ 10 0.25 maximun-scale 최대 확대 / 축소 값 0 ~ 10 1.6 <meta name="viewport" content="width=device-width, initial-scale=1">
가변 그리드 레이아웃
- 고정 그리드 시스템
- 화면을 몇 개의 칼럼으로 나누어 요소들을 배치하는 것
- 화면을 단순하게 만들면서도 규칙적으로 배열하기 때문에 레이아웃을 일관성 있게 유지할 수 있음
- 주로 960픽셀 12칼럼 그리드 사용
- 가변 그리드 레이아웃
- 사이트의 레이아웃을 백분율로 지정
- 너비 값이 줄어들면 실제 콘텐츠 확인하기 불편해 간결한 디자인 사용하는 것이 좋음
- 가변 그리드 레이아웃 만들기
- 전체를 감싸는 요소 확인하고 각 요소의 너비 값 계산하기
- (요소의 너비 / 콘텐츠 전체를 감싸는 요소의 너비) * 100
- 소수점 3~4자리 까지 표시
- 패딩, 마진 값도 계산해서 적용
가변 요소
- 가변 글꼴
- em : 대문자 M의 너비를 1em으로 지정한 것. 1em = 16px
- 브라우저 창에 표시될 때는 해당 기기에 맞춘 픽셀 크기로 계산되어 표시
- 부모 요소를 기준으로 하기 때문에 부모 요소의 크기에 따라 자식 요소의 글자 크기가 바뀜
- rem : 처음부터 기본 크기를 지정하기 때문에 중간에 기본값이 바뀌지 않음. r === root
- em : 대문자 M의 너비를 1em으로 지정한 것. 1em = 16px
- 가변 이미지
- 이미지를 감싸고 있는 부모 요소 크기를 따라갈 수 있도록
max-width: 100%
-
<img>
태그에 srcset 속성 지정 ⇒ 화면 너비나 픽셀 밀도에 따라 고해상도 이미지 파일 지정 가능 -
화면 해상도나 너비에 따라 다른 이미지 표현
<picture> <source srcset="images/apple-large.png" media="(min-width:1024px)"> <source srcset="images/apple-medium.png" media="(min-width:768px)"> <source srcset="images/apple-small.png" media="(min-width:320px)"> <img src="images/apple.png" alt="apple" style="width:100%"> </picture>
- 이미지를 감싸고 있는 부모 요소 크기를 따라갈 수 있도록
미디어 쿼리
미디어 쿼리란?
- CSS3 모듈 중 하나로 사이트에 접속하는 장치에 따라 특정한 CSS 스타일을 사용하도록 함
- @media 속성으로 특정 미디어에 어떤 CSS를 적용할 것인지 지정
-
@media screen and (min-width:200px) and (max-width:360px)
{ } -
연산자
연산자 설명 and 조건 추가 ,(쉼표) 동일한 스타일 유형을 사용할 미디어의 유형과 조건 추가 only 미디어 쿼리를 지원하는 웹 브라우저에만 조건 인식 not not 다음 지정하는 미디어 유형 제외
-
- 조건
-
웹 문서의 가로, 세로
가로, 세로 값 설명 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 단말기 최대 너비 / 높이 -
단말기 크기와 뷰포트 크기 통일하기 위해 뷰포트 지정할 때
width="device-width"
로 놓고 사용
-
- 화면 회전
-
orientation 속성으로 화면 방향 체크
속성 설명 orientation: portrait 단말기 세로 방향 orientation: landscape 단말기 가로 방향
-
-
화면 비율 - 브라우저 화면의 너비, 높이
속성 설명 aspect-ratio 화면 비율(width / height) min-aspect-ratio 최소 화면 비율 max-aspect-ratio 최대 화면 비율 -
단말기 물리적 화면 비율
속성 설명 device-aspect-ratio 단말기 화면 비율(width / height) min-device-aspect-ratio 단말기 최소 화면 비율 max-device-aspect-ratio 단말기 최대 화면 비율 - 색상당 비트 수
-
2의 제곱수 ⇒ color:1 이면 2가지 색상, color:3 이면 8가지
속성 설명 color 비트 수 min-color 최소 비트 수 max-color 최대 비트 수
-
- 미디어 쿼리 중단점
- 서로 다른 CSS를 적용할 화면 크기
- 모바일 퍼스트 : 모바일 기기의 CSS를 먼저 만든 후 다른 기기로 확장해 나감
-
미디어 쿼리 적용
- 외부 CSS 파일 연결
-
<link>
태그<link rel="stylesheet" media="미디어 쿼리 조건" href="css 파일 경로">
- 속성 순서는 상관 없음
- @import 구문
@import url(css 파일 경로) 미디어 쿼리 조건
- CSS 파일이 많고 대규모 사이트를 개발할 때는
<link>
태그를 주로 사용 ⇒ 안정적이고 빠름
-
- 웹 문서에서 직접 정의
<style media=”미디어 쿼리 조건”> 스타일 규칙 </style>
<style @media 미디어 쿼리 조건 { 스타일 규칙 } </style>
플렉스 박스 레이아웃
플렉스 박스 레이아웃과 기본 속성
- 그리드 레이아웃을 기본으로 해 플렉스 박스를 원하는 위치에 배치하는 것. 화면 크기에 따라 레이아웃의 배치나 크기를 조절해야 할 때 편리하게 사용할 수 있음
- display - 플렉스 컨테이너 지정
- display: flex - 박스 레벨 요소로 정의
- display: inline-flex - 인라인 레벨 요소로 정의
- 배치하려는 요소들을 감싸는 부모 요소를 만들고 그 부모 요소를 플렉스 컨테이너로 변환
-
flex-direction - 플렉스 방향 지정
속성 설명 row 주축을 가로로 교차축을 세로로 지정. 플렉스 항목은 왼쪽에서 오른쪽으로 배치 row-inverse 주축을 가로로 교차축을 세로로 지정. 플렉스 항목은 오른쪽에서 왼쪽으로 배치 column 주축을 세로로 교차축을 가로로 지정. 플렉스 항목은 위에서 아래로 column-inverse 주축을 세로로 교차축을 가로로 지정. 플렉스 항목은 아래에서 위로 -
flex-wrap - 플렉스 항목을 한 줄 또는 여러 줄로 배치
속성 설명 no-wrap 한 줄에 표시. 기본값 wrap 여러 줄에 표시 wrap-reverse 여러 줄에 표시하되 기존 방향과 반대 - flex-flow - 플렉스 방향과 여러 줄의 배치 한번에 지정
flex-flow : 플렉스방향 플렉스줄배치
- order - 플렉스 항목의 배치 순서 변경
order: 숫자
-
flex - 플렉스 항목 크기 조절
속성 설명 flex-grow 너비 얼마나 늘일지 숫자로 지정 flex-shrink 너비 얼마나 줄일지 숫자로 지정 flex-basis 플렉스 항목의 기본 크기 지정. auto 일 경우 플렉스 항목의 너비 값 initial 항목의 width/height 값에 의해 크기 결정. 공간이 부족하면 최소 크기까지 줄임 auto 항목의 width/height 값에 의해 크기 결정. 공간에 따라 늘이거나 줄임
플렉스 박스 항목 배치
-
justify-content - 주축 기준의 배치 방법
속성 값 flex-start 주축 시작점 기준으로 배치 flex-end 주축 끝점 기준으로 배치 center 주축 중앙 기준 space-between 처음과 마지막 양 끝에 배치한 후 중앙 항목 같은 간격으로 배치 space-around 모든 항목 같은 간격으로 배치 -
align-items / align-self - 교차축 기준 배치
속성 값 stretch 플렉스 항목 확장해 교차축 꽉 채움. 기본값 flex-start 교차축 시작점 기준 배치 flex-end 교차축 끝점 기준 배치 center 교차축 중앙 기준 배치 baseline 시작점과 글자 기준선이 가장 먼 플렉스 항목을 시작점에 배치. 그 글자의 기준선과 다른 항목의 기준선을 맞추어 배치 -
align-content - 여러 줄일 때의 배치 방법
- justify-content 와 같은 속성 값 사용