오늘 한 것
반응형 웹
동일한 마크업으로 viewport에 따라 다른 레이아웃으로 보여줄 수 있는 웹을 말한다.
작은 디바이스 레이아웃에서 확장시키는 것을 권장한다.(하지만 현업에서는 대부분 데스크탑 레이아웃을 이미 갖고있어서 큰 디바이스에서 작은 디바이스로 확장시키는 과정도 많이 사용 중이다.)
@media queries
@media
queries의 내용은 다음과 같다.
1 | @media all and (min-width: 100px){ |
- 위의 예처럼 사용자 viewport에 따라 다른 코드를 실행함으로써 layout 등을 유동적으로 보여줄 수 있다.
반응형 img
1 | img { |
- 그냥
width
로 크기를 지정할 경우 원본 이미지보다 큰 viewport일 경우 이미지가 깨질 수 있기 때문에 이미지의 최대 크기만큼만 크기를 지정한다.
이미지 이슈
디바이스나 환경마다 이미지의 용량 최적화가 필요하다. 그렇지 않다면 필요 이상의 큰 용량의 크기를 가진 이미지를 불러오느라 성능이 저하되며 클라이언트의 데이터 사용량이 필요 이상으로 증가한다.
고해상도 디스플레이(Retina Display)가 들어오면서 비트맵 이미지가 깨지는 현상이 발생하기 때문에 고해상도 이미지가 필요하다. 이미지를 백터 이미지, 초고해상도 이미지로 준비하고 상황에 따라 다르게 뿌려줄 필요가 있다.(
<img srcset>
을 이용할 수 있다).Art direction: 기기 지원 해상도에 비해 불필요하게 해상도가 높은 이미지를 쓰는 경우 클라이언트의 데이터 낭비로 직결된다.
<img srcset>
/<picture>
(srcset보다 직관적이긴 하지만 현업에서 잘 쓰이지 않음(IE11 호환 안 된다.)등을 사용한다.
참고: 반응형웹디자인
백터 이미지 사용
1 | <svg width="50" height="50" viewBox="0 0 50 50" fill="none"> |
- title을 통해
<img>
의alt
속성의 기능을 대체할 수 있다.
접근성 관련
1 | <button |
aria-label
로 메뉴 닫기 의미를 전달하며 x기호를 aria-hidden
으로 읽지 못하게 하여 접근성을 높인다.
오늘 느낀 것
반응형 웹을 공부한다. 생각보다 할만 하지만 CSS의 양도 늘어나고 기기마다의 해상도 차이 문제로 골치 아플 것 같다.
EDIYA 홈페이지 클론코딩을 하는데 재미있다. 근데 당분간 EDIYA는 가기 싫을 것 같다.
오늘도 새로운 배움에 즐거웠다. 내일도 ‘즐코’