Tailwind 왜 쓸까?
7분 읽기
Tailwind란?
- utility 중심의 CSS 프레임워크
utility-first는 무슨 뜻일까?- 사용자가 정의한 CSS 클래스를 사용하는 대신 마크업에서 직접 요소의 스타일을 지정 (ex. margin, padding, color, font size 등을 처리할 수 있는 클래스 라이브러리를 제공하는 방식)
- 재사용이 가능하도록 설계 되어 있고, 커스텀이 유연하여 프로젝트에 맞게 조정 가능
우리는 왜 Tailwind를 선택했을까?
- 최근 5년간 통계를 보면 재사용을 희망하거나 관심의 비중이 높음
![]()
- 최근 5년간 사용자의 만족도가 높음
![]()
- 인지도나 누적 사용량은 아무래도 부트스트랩이 높음
- 당장 22년도까지만 해도 IE 지원을 해야 했다 (지원 종료된 시점이 22년 6월 5일)
- 하위 브라우저 시절부터 지원한 만큼 어쩔 수 없다
- 하지만 관심도, 만족도 측면에서 Tailwind가 앞선다
- VSCode에서의 지원
- Editor Setup - Tailwind CSS
- 자동완성, 구문 하이라이트, CSS 관련 잠재적인 lint 오류 체크 등을 지원하고 있다
Bootstrap과의 차이점은?
Bootstrap이 익숙하신 분들을 위해 차이점을 요약해드림
| Bootstrap | Tailwind CSS | |
|---|---|---|
| 특징 | 이미 만들어진 컴포넌트 기반 (스타일 관련해서도 제공되지만 제한적) | 색상, 간격, 텍스트 스타일과 같은 유틸리티 우선 접근 방식 (사용자 정의 가능) |
| 커스텀 | 매우 제한적 (Sass 변수 등을 재정의해야함) | 유연성이 높음 |
| 브라우저 지원 | IE를 포함해서 구형 브라우저도 지원 (현재의 5버전에서는 지원종료) | IE를 포함하지 않음 |
| 러닝 커브 | 쉬움 | 높은 편 |
| 개발 속도 | 초기 개발 시 빠름 (이미 class 하나에 만들어져 있으니까) | 느리지만, 정확함 (처음에 배울게 많지만 커스텀 자유도가 높아서 정확하게 스타일링 가능) |
| 퍼포먼스 | 무거움 | 가벼움 (실제 사용하는 CSS만 전송) |
- Bootstrap에서 커스텀이 어려운 이유
.card-footer {
padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
color: var(--bs-card-cap-color);
background-color: var(--bs-card-cap-bg);
border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
}.border-primary {
--bs-border-opacity: 1;
border-color: rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important
}Tailwind와 SCSS와의 궁합
For the best development experience, we highly recommend that you use PostCSS exclusively, and that you don't use preprocessors like Sass or Less in your Tailwind projects.
- 기존에 SCSS로 스타일을 입혀왔기 때문에, SCSS와의 궁합도를 체크해봤다
- Tailwind 공식 문서에서는 PostCSS를 전처리기로 사용하는 건 권장하지만, Sass나 Less의 사용은 권장하지 않는 것으로 되어있다
처음 프로젝트 생성 시 세팅법
15일 기준, 카야와 협의한 프로젝트 환경에 대한 구성 방식은 React, TypeScript, Vite, Yarn Berry라고 했기 때문에 우선은 해당 요건에서 설정한다는 가정하에 install을 해봄
- Tailwind CSS에서 npm이나 npx로만 설정하는 방식을 설명하고 있어서 직접 프로젝트 세팅한다는 느낌으로 명령어를 정리해봤다
# 처음에 그냥 yarn으로 설정하려 할 때 아무것도 안되서 공식 사이트 갔더니 이 명령어를 사용함
$ corepack enable
# yarn으로 vite 기반 프로젝트 react/typescript로 생성
$ yarn create vite {{ 프로젝트명 }}
# 이후 react, typescript 선택
# 생성된 프로젝트 폴더로 넘어감
$ cd {{ 프로젝트명 }}
# yarn 버전 체크 시 1.x버전으로 나옴
$ yarn -v # 1.22.22
# yarn berry로 버전 변경 (4.x 버전으로 생성)
$ yarn set version berry # 4.5.0
$ yarn install
# yarn에 tailwindcss 추가
$ yarn add -D tailwindcss
# 공홈에는 postcss, autoprefixer 사용시에는 아래와 같이
$ yarn add -D tailwindcss postcss autoprefixer
# tailwind.config.ts 파일 생성
$ yarn tailwindcss init -p --ts
# 실행
$ yarn devsrc/index.css에 아래의 내용 추가
@tailwind base; /* 브라우저 초기화 및 기본 설정 */
@tailwind components; /* tailwind에서 제공하는 컴포넌트에 대한 스타일. 없어도 동작함. */
@tailwind utilities; /* 빠지면 절대 안됨 */- 초기 CSS 스타일에 대한 설정을 추가로 하고 싶다면?
@tailwind base;
@layer base {
h1 {
@apply text-2xl;
}
h2 {
@apply text-xl;
}
h3 {
@apply text-lg;
}
a {
@apply text-blue-600 underline;
}
}
@tailwind components;
@tailwind utilities;-
위와 같이
@layer로 base를 지정한 뒤 개별 요소에@apply로 추가하고자 하는 설정 값을 설정하면 초기 세팅이 가능함 -
생성된
tailwind.config.ts에 아래와 같이 설정
import type { Config } from 'tailwindcss'
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
} satisfies Config-
content는 Tailwind에 대해 규칙을 적용하는 파일의 경로를 설정할 수 있음 -
만약 Tailwind에서 제공하는 브라우저에 대한 초기화 CSS를 사용하고 싶지 않다면?
import type { Config } from 'tailwindcss'
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
corePlugins: {
preflight: false,
}
} satisfies Config-
corePlugins.preflight: false옵션을 추가하면 됨 -
Unknown at rule @tailwind css 이슈 발생 시
- VSCode에서 플러그인 설치로 해결 가능
- React에서 TailwindCSS 사용 시 warning 해결