%, vw/vh, rem 등이 능사는 아니다: 왠지 hard number가 아닌 '비율'을 사용하면 나중에 화면 크기가 변동될 때 유동적으로 엘리먼트 크기가 변화하니까 좋지 않을까 했는데 의외로 크게 도움이 되지 않았다. 오히려 일정 너비까지는 메인 엘리먼트는 크기를 똑같이 두고 마진만 줄어들다가 임계점이 오면 메인 엘리먼트가 한 단계 작아지고? 하는 것이 더 자연스럽고 그럴듯해 보인다. 특히 rem과 em의 사전적 차이는 알았는데 굳이 다르게 사용할 일이 있을까? 했는데 있었다.
(rem: root element의 폰트 크기를 기준으로 잡음
em: 부모 엘리먼트의 폰트 크기를 기준으로 잡음)
뷰의 너비가 줄어서 랜딩의 폰트를 더 작게 재설정했지만, 모달의 경우 정보가 많지 않고 전체 화면을 차지하지 않으니 폰트 및 모든 비율을 전체화면 뷰일 때와 동일하게 두고 싶었다. 모달의 모든 자식 엘리먼트의 폰트 사이즈를 크게 설정해 두고 모든 여백 비율 등을 em으로 표현하니 루트 폰트와 별개로 표현할 수 있었다!
뷰 크기 단계를 몇 개 정해 놓고 그 단계에 따라 다른 비율의 뷰를 만들어 주는 것이 좋다: 현재 프로젝트 같은 경우는 러프하게 720px, 480px 기준으로 잡고 너비가 720이상, 720~480 사이, 480 이하일 때 다른 비율로 보이도록 했다. 높이는 사실 크게 상관이 없는 게 어차피 웬만한 웹사이트는 필연적으로 상하스크롤이 있기 마련이니까... 몇 가지 엘리먼트의 경우 해당 임계 포인트가 잘 들어맞지 않아서 추가적으로 960px, 400px 그룹을 따로 만들어 주었다.
모바일에 가까운 크기인 경우 display: none
신공으로 자잘한 엘리먼트는 숨겨 준다: speaks for itself. 어차피 모바일은 간소화가 맞다. 여백도 최소화하고 내용에만 집중토록 한다.
플렉스박스를 그렇게 많이 쓸 거면 그냥 애초에 모두 플렉스로 설정해두고 시작하자: 이건 그냥 display: flex 일억만번 쓰다가 내가 지쳐서...
콕 찝어 스타일링 해야 하는 엘리먼트가 아니더라도 일단 클래스나 아이디를 통일성 있게 만들어 두자: 이게 안 돼서 식별자 없는 엘리먼트를 스타일링 해야 할 때 부모의 부모, 부모의 부모의 부모 이런 식으로 선택해서 스타일링 해야 하면 나중에 태그 구조 변동이 되는 경우 난리가 난다. (그리고 태그 구조 변동은 나기 마련이라고 봐야 한다.)
재사용이 가능한 리액트 컴포넌트인데 위치에 따라 다르게 스타일링 해야 하는 경우: 가장 기준이 되는 모양을 먼저 잡아 두고 (앱 안에서 가장 흔하게 쓰일 스타일) 다른 위치에서 쫌쫌따리 추가변경제거해서 원하는 모양으로 바꾼다.
가장 작은 컴포넌트부터 스타일링해서 쌓아 올라간다: 이건 이번 프로젝트에 시도해 보지는 못했는데, 일단 대강의 레이아웃이 잡히고 나면 하위의 (그래서 여기저기 많이 재사용되는) 컴포넌트부터 스타일링 하는 것이 조금 더 섬세하게+효율적으로 작업 가능할 것 같다. 이번에는 무식하게 재사용성 무시하고 일단 페이지 별로 만들었더니 후작업에 시간이 너무 소요된 것 같다.
반응형 작업했던 게 배포되어서 모바일 환경에서도 볼 수 있다. 귀여워 ㅎ