Tailwind CSS
CSS 스타일링
CSS 스타일링 방식또한 다른 웹 기술처럼 계속 발전하고 있습니다. 프로젝트의 규모나 성격에 따라 적합한 방식이 다를 수 있습니다.
CSS 스타일링 방식
웹 개발에서 자주 쓰이는 대표적인 방식 4개를 간단히 정리해보겠습니다.
-
전통적인 Global css
전역에 CSS 파일을 한 번 import하여 모든 컴포넌트에 스타일을 적용하는 방식입니다. 간단하고 이해하기 쉬워 작은 프로젝트 규모에 활용할 수 있습니다만.. 클래스 이름 충돌 및 헷갈림 등의 문제가 발생할 수 있습니다. -
css module
*.module.css 파일을 만들면 클래스 이름이 고유하게 변환되어 충돌을 방지할 수 있습니다. 컴포넌트 단위로 스타일링 할 수 있지만, 동적 스타일링이 어렵습니다. -
css-in-js (styled-components)
컴포넌트와 스타일, 로직을 하나의 파일 안에서 관리합니다. props 기반 동적 스타일이 가능합니다. 편리하지만 런타임 오버헤드와 번들 크기 증가 등의 단점이 있습니다. -
tailwind css
m-1, flex 등 미리 정의된 유틸리티 클래스를 활용하여 HTML 코드 내에서 스타일링할 수 있습니다. 빠른 UI 개발과 디자인 일관성 유지에 좋지만 HTML 가독성이 떨어질 수 있습니다.
css-in-js
오늘 포스팅을 쓰기 전까지는 tailwind는 약간 사파 방식이라고 생각하고 있었습니다.. 저는 1 -> 2 -> 3 순으로 css styling 방식을 접했는데, css-in-js 방식을 보고 완전 혁신이다 라 고 느꼈었습니다.
css-in-js 사용하면서 느낀 점은
- 한 페이지(컴포넌트) 안에 바로 CSS 적을 수 있어서 className 생각 안해도 되서 편함
- CSS 자동완성 안되서 숙련되긴 해야함
- 다른 페이지와 중복된 클래스를 만들고 싶을때, 그냥 중복으로 적어야되서 애매하긴 했음
적어보니 단점이 많은 것 같은데.. 단점이 있어도 1번의 장점이 너무 커서 잘 쓰고 있었습니다. 그런데 포스팅 작성하면서 내용 조사해보니 요즘에는 css-in-js에서 tailwind로 옮겨가고 있는 추세라고 합니다.
대표적인 이유는 다음과 같습니다.
- 런타임 오버헤드 문제 : 런타임 시점에 스타일을 생성, DOM이 렌더링때마다 스타일 계산
- 번들 크기 증가 : 스타일 정보를 JS 번들에 포함하므로 렌더링 성능에 영향
- SSR환경에서 사용하면 렌더링 순서 문제 발생
- 개발경험(DX) 개선된 대체재 등장
tailwind
그럼 제가 앞으로 써볼 Tailwind에 대해서도 자세히 알아봅시다
Tailwind CSS는 UI를 빠르고 효율적으로 구현할 수 있도록 도와주는 CSS 프레임워크입니다. 유틸리티 클래스를 기반으로 스타일을 적용할 수 있으며, 기초적인 클래스만 제공하여 커스터마이징이 가능하도록 합니다. Tailwind는 Utility-First 철학에 기반하여 클래스 중복을 최소화하고 효율적인 디자인을 구현합니다.
Utility First 철학
- 개발자 편의성
- 디자인 일관성
- 재사용성 & 유지보수
- 성능 최적화
철학에 맞게 Tailwind는 빠른 UI 구성, 디자인 일관성 유 지, 작은 번들 사이즈, tailwind.config.js로 디자인 기준 통일까지 할 수 있습니다.
<ol class="list-decimal pl-5 space-y-1 text-gray-700">
<li>Profile</li>
<li>Post</li>
<li>Setting</li>
</ol>
흠시멘.. 일단 지금 보기에는 깔끔한것 같기도 난잡한 것 같기도 하지만 익숙해지면 다 읽히겠죠?
자세한 유틸리티 클래스는 Tailwind 공식사이트를 참 고합시다