[CSS] CSS 기초 - 반응형 웹 & 그리드 레이아웃
카테고리: HTML/CSS
태그: grid
1. 반응형 웹
- 화면 크기가 다양한 모바일 기기가 등장함
- 이에 맞춰 요소를 재배치하거나 표시 방법을 바꿈.
<code>
2. 뷰포트
- 뷰포트의 의미
- 모바일 화면에서 실제 내용이 표시되는 영역
- webkit 기반의 모바일 기본 뷰포트 너비는 ‘980px’
- webkit: 많은 모바일 브라우저의 실행엔진
-
뷰포트 지정
<meta name="viewport" content="width=device-width, initial-scale=1" /* 가장 많이 사용하는 뷰포트 속성*/ /* 너비를 모바일화면에 맞추고 초기 배율을 1로 지정*/
-
뷰포트 단위
이름 의미 vw 1vw는 뷰포트 너비의 1% vh 1vh는 뷰포트 높이의 1% vmin 1vmin은 뷰포트의 너비와 높이 중 작은 값의 1% vmax 1max은 뷰포트의 너비와 높이 중 큰 값의 1% <meta name="viewport" content="width=device-width, initial-scale=1" /* 가장 많이 사용하는 뷰포트 속성*/ /* 너비를 모바일화면에 맞추고 초기 배율을 1로 지정*/
3. 미디어쿼리
- 미디어쿼리의 의미
- 기기의 해상도에 따라 다른 스타일 시트 적용
- 보통 속도나 화면크기에서 모바일의 제약이 많아 모바일의 레이아웃을 기본으로 CSS 제작(모바일퍼스트)
-
미디어쿼리 적용
- 외부 CSS파일로 연결
- 웹 문서에 직접 정의하는 방법
<meta name="viewport" content="width=device-width, initial-scale=1" /* 가장 많이 사용하는 뷰포트 속성*/ /* 너비를 모바일화면에 맞추고 초기 배율을 1로 지정*/
<meta name="viewport" content="width=device-width, initial-scale=1" /* 가장 많이 사용하는 뷰포트 속성*/ /* 너비를 모바일화면에 맞추고 초기 배율을 1로 지정*/
4. 그리드 레이아웃
- 반응형 웹에서 화면에 따라 요소를 재배치할 때 기준 필요
- 이 때 웹 사이트를 여러개의 column으로 나눈 후 배치하는 것이 ‘그리드 레이아웃’
- 시각적으로 안정(익숙) / 업데이트 편함 / 요소 자유배치 가능
- 그리드 레이아웃을 만드는 방법
a. 플렉서블 박스 레이아웃
- 수평, 수직 중 한 쪽을 ‘주축’으로 정하고 박스 배치
- flex box layout, 보통 flex box라고 부름
- IE11에서는 부분적으로만 지원함
b. CSS 그리드 레이아웃
- ‘주축’ 개념이 없고 수평, 수직 어느 방향이든 배치
- 대부분의 모던 브라우저에서 사용 가능
5. 플렉스 박스 레이아웃
- 기본용어
a. 플렉스 컨테이너 : 플렉스 박스 적용 대상을 묶음 b. 플렉스 항목 : 플렉스 박스 레이아웃을 적용하는 대상 c. 주축 : 플렉스 박스에서 항목을 배치하는 기본방향 d. 교차축 : 주축과 교차하는 방향
-
컨테이너 & 방향 관련 속성
- display 속성 - 플렉스 컨테이너 지정
.container { display: flex; } /*플렉스 항목을 블록 레벨 요소로 배치*/ .container { display: inline-flex; } /*플렉스 항목을 인라인 레벨 요소로 배치*/
- display에 flex속성은 부모요소에 적용
- 자식요소는 flex라는 속성에 값 적용- flex-direction 속성 - 플렉스 방향 지정
.container { display: flex; flex-direction: row; } /*주축을 가로, 왼->오로 배치 (기본값)*/
- flex-wrap 속성 - 플렉스 줄바꿈 여부 지정
.container { display: flex; flex-direction: row; flex-wrap: nowrap; } /*너비보다 많은 플렉스 항목이 있을 때 줄안바꿈(기본)*/
-
축 설정 관련 속성
-
justify-content 속성 - 주축에서 항목 간 정렬 방법 |종류|설명| —|— flex-start|주축의 시작점에 맞춰 배치 flex-end|주축의 끝 점에 맞춰 배치 center|주축의 중앙에 맞춰 배치 space-between|주축의 양 끝에 배치 후 그 사이에 배치 space-around|모든 항목을 주축에 같은 간격으로 배치
.container { justify-content: flex-start; } /*항목을 주축의 시작점에 맞춰 배치*/
-
align-items 속성 - 교차축에서 항목 간 정렬 방법 |종류|설명| —|— flex-start|교차축의 시작점에 맞춰 배치 flex-end|교차축의 끝 점에 맞춰 배치 center|교차축의 중앙에 배치 baseline|교차축의 문자 기준선에 맞춰 배치 stretch|플렉스 항목을 늘려 교차축에 가득 차게 배치
.container { align-items: flex-start; } /*항목을 교차축의 시작점에 맞춰 배치*/
-
-
flex 속성의 하위 속성
- flex의 기본속성 : grow, shrink, basis
flex: <grow> <shrink> <basis>
p { flex: 0 1 auto; } /* flex속성의 기본값 */
-
grow (팽창 지수)
- 값을 1로 설정 시 가능한 모든 영역을 차지
- 모든 자식 박스가 동일한 0이상 값을 가지면 동일비율 차지
- 일부 요소가 값이 크다면 비율대로 나눠 가짐\
-
shrink (수축 지수)
- width나 flex-basis 속성에 따른 비율이라 크기 예측 어려움
- 둘 다 동시에 사용 보다는 shrink 을 기본값(1)로 지정
p { flex: <grow 값> 1 auto; }
- basis - 기본 크기
- 자식박스가 grow나 shrink에 의해 변화하기 전의 크기
- flex-grow의 속성 값이 0인 경우에만 유지 됨
- 콘텐츠가 많아 넘치는 경우 width가 정확한 크기 보장 X
- width와 동시 적용 시 flex-basis가 우선
- flex의 기본속성 : grow, shrink, basis
-
기타
-
레이아웃 리셋
- 박스의 시작을 (0,0)으로 하고 싶을 때(기본여백 제거)
- 페이지 구성 시 여백을 포함해 계산
- 브라우저 마다 여백/글꼴 등 기본 스타일이 다름
- 라이브러리 또는 아래 코드 사용
* { box-sizing: border-box; } body { margin: 0; padding: 0; }
-
flex-wrap 속성
- 콘텐츠 길이의 합이 너비를 초과할때의 처리
.item { flex-wrap: wrap; }
-
order 속성
- 기본 값은 0이고 양수/음수로 바꿔 순서롤 조정
- 음수일 경우 양수보다는 최상단으로 이동
.item { order: 1; }
-
댓글 남기기