-
Notifications
You must be signed in to change notification settings - Fork 2
[FE] 스타일링 방법 선택 및 이유
Gyuhan Park edited this page Jul 21, 2024
·
2 revisions
css-in-js 라이브러리 중 하나인 Emotion 의 emotion css prop 방식 사용
css를 적용하기 위해 css modules 방식과 css-in-js 방식 중 css-in-js
선택
-
동적 스타일링 용이
- props에 따라 조건부로 스타일링을 줄 때 용이
- 자바스크립트로 계산된 값을 스타일에 적용하기 쉬움
- 동적 스타일링의 역할을 css 에게 위임하여 관심사 분리
-
테마 적용 용이
- 단일 변수값으로만 가져올 수 있는 css와 달리, 객체 형식으로 관리하여 스타일을 표현할 수 있음
- 추후 다크모드, 다국어 등을 고려했을 때 확장성 높음
emotion 라이브러리의 css prop 방식과 styled 방식 중의 Emotion css prop
선택
-
어떤 태그인지 명시적으로 확인 가능
- ❌ 불편함 : styled 방식을 사용했을 때 네이밍을 통해 태그를 유추하기 어려웠음
- ✅ 해결 : 협업할 때 다른 사람의 코드를 읽을 경우 어떤 태그를 사용했는지 직관적으로 알기 쉬움
-
컴포넌트와 HTML 태그 파악 용이
- ❌ 불편함 : 코드의 일관성을 지키기 위해, 스타일이 없어도 불필요한 styled 컴포넌트로 만들었음
- ✅ 해결 : 컴포넌트, 스타일이 적용된 HTML tag, 스타일이 적용되지 않은 HTML tag 를 구분하기 용이함
❌ <S.namesWrapper> <S.title>마루</S.title> // 스타일이 적용된 HTML tag <S.Content>썬데이</S.Content> // 스타일이 적용되지 않은 HTML tag <S.Content>포메</S.Content> // 스타일이 적용되지 않은 HTML tag </S.namesWrapper> ⭕ <section css={namesWrapper}> <span css={title}>마루<span> <span>썬데이<span> <span>포메<span> </section>
-
재사용성 높음
- ❌ 불편함 : styled 방식도 재사용 가능하지만 형태가 제한적
- ✅ 해결 : 필요한 부분만 객체 단위로 스타일을 재사용하기 쉬움
css-in-js 중 보편적인 Emotion과 styled-components 중 Emotion
선택
-
다운로드 수가 많음
- 사용자가 많을수록 커뮤니티와 생태계가 넓다는 의미이기 때문에, 래퍼런스를 찾거나 다양한 오류들을 해결했을거라고 판단할 수 있음
-
압축된 크기 기준으로 파일 사이즈가 작음
- css prop 만 사용할 경우
@emotion/react
만 다운로드받기 때문에 파일 사이즈 측면에서 이점을 얻을 수 있음 (11KB → 7.9KB) - 또한 모바일 환경을 타겟으로 했을 때 네트워크가 느린 경우가 자주 발생하기 때문에, 다운로드 속도 측면에서 이점을 얻을 수 있음 (220ms → 158ms)
- css prop 만 사용할 경우