히치키치

이상청 : 미디어쿼리와 useWindowWidth() 이용한 반응형 웹페이지 본문

이상청

이상청 : 미디어쿼리와 useWindowWidth() 이용한 반응형 웹페이지

히치키치 2022. 8. 8. 05:47

💙 반응형 웹

1. 모바일 / PC 사용자 모두에게 이질감 없는 UI 제공

: CSS 미디어 쿼리 사용

2. 모바일 / PC 환경에서 편리한 유저 행동에 근거해 반응형 컴포넌트 렌더링

모바일 : 스크롤로 투표 목록 보기 & 드래그를 통해 찬반 투표가 편리

PC : 슬라이드를 넘기며 투표 목록 보기 & 클릭으로 찬반 투표가 편리

: useWindowWidth()와 조건부 랜더링 사용

 

💙 CSS 단 반응형 처리 : CSS 미디어 쿼리 사용

 

목표 : 기기 타입별 너비를 상수화하며 기기타입을 키 값으로 활용해서 반응형 CSS가 적용되도록 함

 

1. 기기별 타입별 너비 상수화

/constants/deviceInfo.js

 

2. 상수화된 타입별 기기 너비를 이용해 미디어 쿼리문 생성

/styles/mediaQuery.js

 

3. 기기 타입을 키 값으로 활용해 실제 반응형 CSS 적용

 

💙 컴포넌트 단 반응형 처리 : useWindowWidth와 조건부 랜더링 사용

 

목표 : useWindowWidth로 너비 받아오기 -> 상수화 해놓은 breakpoint를 비교 -> 랜더링할 컴포넌트 결정

 

1. 기기 너비를 감지하고 현재 기기 너비를 반환하는 커스텀 훅인 useWindowWidth 작성

 

2. 컴포넌트에서 useWidowWidth를 사용해 조건부 랜더링 진행

컴포넌트 return문에서 적용

 

아쉬운 점:

(1) useWindowWidth로 너비 받아오기(number) -> (2) 상수화 해놓은 breakpoint를 비교(number) -> (3) 랜더링할 컴포넌트 결정

흐름으로 진행하였는데 (2)가 컴포넌트 내부에서 이루어져 좀 덜 직관적인 것 같다..

훅 내부에서 너비에 따라 기기 타입(String)을 리턴하도록 훅을 작성하고

컴포넌트 내에서는 해당 기기타입(String)에 따라 조건부 랜더링하는게 더 좋을 것 같기더...

Comments