반응형 디자인을 위한 3가지 규칙
개인 프로젝트를 진행하면서 개별 디바이스마다 스타일을 하나하나 입력하고 있는 나를 발견하게 되면서
반응형 디자인
에 대해 알고 싶다는 생각이 들어 공부하게 되었다.
🔥 반응형 디자인 규칙 3가지
- 모바일 먼저
- 미디어 쿼리
- fluid layout
반응형 디자인이 왜 필요하죠?
이전에는 데스크탑, 모바일 웹사이트를 각각 제작하였다면 반응형 디자인을 하게 되면
분리되지 않은 같은 HTML, CSS
를 어떤 유저에게도 전달할 수 있다.
미디어 쿼리 덕분에 유저가 사용하는 브라우저 뷰포인트 사이즈에 따라 컨텐츠를 다르게 렌더할 수 있다.
시작 전 고려사항
✅ 디자인 = 컴포넌트 쪼개기
컴포넌트 리스트 |
---|
header |
hero |
main content |
✅ HTML 작성시 데스크탑요소들도 모두 포함해야 한다. 같은 HTML이라는 걸 기억해야 한다.
✅ 초기 스타일 먼저 적용하기
- font, color
:root {
box-sizing: border-box;
/* 뷰 포트에 따라 글자 살짝 커짐 */
/* 가장 큰 breakpoint에서 글자 더 커지지 않도록 고정된 font-size 주기 */
font-size: calc(lvw+0.6em);
}
✅ 보이지 않는 요소를 처리하는 방법
- 햄버거 버튼 같은 경우,
dislpay:none
인 경우 스크린 리더기가 읽기 못해 접근성이 저하된다. 따라서position : absolute
로 뷰포트에서 보이지 않도록 위치 설정해야 한다.
자 그럼 반응형 디자인을 직접 해보자!
1. 모바일 먼저 제작하기
- 공간이 좁은 모바일을 먼저 제작할 경우 모바일과 데스크탑을 모두 만족시키기가 쉽다. 반대로 데스크탑 먼저 제작하면 상대적으로 좁은 공간인 모바일에 많은 요소를 넣는게 쉽지 않다.
- 모바일은 hover가 되지 않기 떄문에 미디어쿼리 데스크탑 사이즈에만 추가하면 된다.
# 모바일 디자인 팁
- Task Oriented Content가 먼저 나온다.
- 화면이 좁기 때문에 중요한 요소가 먼저 나와야한다. 반대로 Desktop의 경우는 interactive하게 구성하는게 중요하다.
2. 미디어쿼리 활용하기
- HTML
meta 태그
를 꼭 추가해야한다. 모바일 기기에는 모바일 버전을 보여주기 때문에 중요하다. - 스크린 사이즈에 반드시
em
사용하기 -> 왜? 모든 브라우저에 일관되는 디자인을 보여준다. - em 사용하게 되면 scale up과 down에 용이하다.
- 모바일 먼저 디자인하기 때문에 미디어쿼리는 min-width를 사용하게 된다.
3. Fluid Layout
- 컨테이너가 뷰포트 width에 맞게 늘어나고 줄어들도록 하는게 중요하다.
- 컨테이너 width에 특정 숫자가 아닌
%
단위 사용한다. 이렇게 하면 스크린 크기 상관없이 컨텐츠가 fit하게 자리를 차지한다. - 컨테이너 width가
400px
인 경우, device가200px
이면 overflow한다. - 컨테이너를 고정된 값인
px
이 아니라%
로 생각하면 좋다.
# responsive image
- 이미지 압축하는 건 필수!
- 다른 뷰포트에 다른 사이즈의 이미지를 사용하면 작은 기기에 작은 용량의 이미지가 로드되도록 할 수 있다.
- 이미지에
max-width:100%
를 적용하면 컨테이너 넘치지 않고 이미지가 반응형으로 동작한다.
회고
- 반응형 디자인 구현이 큰 산처럼 느껴져서 할 때마다 어려움을 많았다. 어느 순간 내가 이미지 위치를 각각
px
로 잡고 있었다. 매번 생각만 하다가 책을 읽고 manual을 작성하니 왜 모바일 먼저 제작해야 하는지를 이해할 수 있어서 좋았다. 또한 규칙을 정하고 나니 따라야 할 것들이 분명해지고, 스타일 코드가 더 단순해져서 좋았다. 프로젝트를 진행하다 막히는 순간이 오면 진행하기 전 규칙이 필요한 순간임을 다시 한 번 배웠다.