tailwind CSS : 유틸리티 기반 CSS 프레임워크

2025. 3. 1. 10:55·TypeScript
반응형
# 설치
npm install tailwindcss
npx tailwindcss init

Tailwind CSS는 유틸리티 클래스를 기반으로 한 혁신적인 CSS 프레임워크입니다. 미리 정의된 클래스를 조합하여 HTML 내에서 직접 스타일을 구성할 수 있어 생산성을 크게 높일 수 있습니다. 2017년에 Adam Wathan에 의해 만들어진 이 프레임워크는 CSS 작성 방식에 혁명을 가져왔으며, 현재 많은 기업과 개발자들이 채택하고 있습니다.

기본 설정

// tailwind.config.js
module.exports = {
  content: ["./src/**/*.{html,js}"],
  theme: {
    extend: {},
  },
  plugins: [],
}
/* main.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

유틸리티 클래스 비교

기능 Tailwind 클래스 일반 CSS
너비 w-full, w-1/2, w-64 width: 100%, width: 50%, width: 16rem
여백 m-4, mx-2, mt-10 margin: 1rem, margin: 0 0.5rem, margin-top: 2.5rem
색상 text-blue-500, bg-red-200 color: #3b82f6, background-color: #fecaca
레이아웃 flex, grid, items-center display: flex, display: grid, align-items: center

Tailwind CSS의 핵심 개념

1. 유틸리티 우선 접근법

Tailwind의 핵심 철학은 "유틸리티 우선(utility-first)" 접근법입니다. 이는 미리 정의된 유틸리티 클래스를 조합하여 디자인을 구축하는 방식입니다.

<!-- 전통적인 CSS 방식 -->
<div class="chat-notification">
  <div class="chat-notification-logo"></div>
  <div class="chat-notification-content">
    <h4>새 메시지</h4>
    <p>새로운 메시지가 도착했습니다.</p>
  </div>
</div>

<!-- Tailwind CSS 방식 -->
<div class="p-6 max-w-sm mx-auto bg-white rounded-xl shadow-lg flex items-center space-x-4">
  <div class="shrink-0">
    <img class="h-12 w-12" src="/img/logo.svg" alt="Logo">
  </div>
  <div>
    <div class="text-xl font-medium text-black">새 메시지</div>
    <p class="text-gray-500">새로운 메시지가 도착했습니다.</p>
  </div>
</div>

2. 반응형 디자인

Tailwind는 모바일 우선 접근 방식을 채택하고 있으며, 간단한 접두사 시스템을 사용하여 반응형 디자인을 쉽게 구현할 수 있습니다.

<div class="w-full md:w-1/2 lg:w-1/3 p-4">
  <!-- 모바일: 전체 너비, 태블릿: 50%, 데스크톱: 33.3% -->
  <div class="text-sm md:text-base lg:text-lg">
    반응형 텍스트 크기
  </div>
</div>

기본 브레이크포인트:

  • sm: 640px 이상
  • md: 768px 이상
  • lg: 1024px 이상
  • xl: 1280px 이상
  • 2xl: 1536px 이상

3. 상태 변형(State Variants)

Tailwind는 호버, 포커스, 활성 상태 등 다양한 상태에 대한 스타일링을 지원합니다.

<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:ring-2 focus:ring-blue-400">
  저장하기
</button>

4. 다크 모드

Tailwind 2.0부터는 다크 모드를 위한 내장 지원이 추가되었습니다.

<div class="bg-white dark:bg-gray-800 text-gray-900 dark:text-white">
  라이트 모드와 다크 모드에서 다르게 보입니다.
</div>

실전 예제: 카드 컴포넌트 만들기

<div class="max-w-md mx-auto bg-white rounded-xl shadow-md overflow-hidden md:max-w-2xl m-4">
  <div class="md:flex">
    <div class="md:shrink-0">
      <img class="h-48 w-full object-cover md:h-full md:w-48" src="https://picsum.photos/200" alt="상품 이미지">
    </div>
    <div class="p-8">
      <div class="uppercase tracking-wide text-sm text-indigo-500 font-semibold">케이스 스터디</div>
      <a href="#" class="block mt-1 text-lg leading-tight font-medium text-black hover:underline">Tailwind CSS로 멋진 인터페이스 만들기</a>
      <p class="mt-2 text-gray-500">유틸리티 클래스를 활용하여 빠르게 디자인을 구현하는 방법을 알아봅니다.</p>
      <div class="mt-4">
        <button class="px-4 py-2 bg-indigo-500 text-white rounded hover:bg-indigo-600 focus:outline-none focus:ring-2 focus:ring-indigo-400">
          더 알아보기
        </button>
      </div>
    </div>
  </div>
</div>

커스터마이징

Tailwind의 큰 장점 중 하나는 높은 커스터마이징 가능성입니다. tailwind.config.js 파일을 통해 색상, 간격, 브레이크포인트 등을 손쉽게 조정할 수 있습니다.

// tailwind.config.js
module.exports = {
  theme: {
    colors: {
      primary: '#FF6B6B',
      secondary: '#4ECDC4',
      // 기본 색상을 커스텀 색상으로 재정의
    },
    extend: {
      spacing: {
        '72': '18rem',
        '84': '21rem',
        '96': '24rem',
      },
      borderRadius: {
        '4xl': '2rem',
      }
    }
  },
  variants: {
    extend: {
      backgroundColor: ['active'],
      textColor: ['visited'],
    }
  }
}

JIT(Just-In-Time) 모드

Tailwind 3.0부터는 JIT 모드가 기본적으로 활성화되어 있습니다. 이 모드는 빌드 시간을 크게 단축시키고, 임의의 값을 사용할 수 있게 해줍니다.

<!-- 임의의 값 사용 예시 -->
<div class="top-[117px] h-[calc(100vh-117px)] bg-[#bada55]">
  커스텀 위치, 높이, 배경색
</div>

성능 최적화

프로덕션 환경에서는 PurgeCSS가 통합되어 있어, 사용하지 않는 클래스를 자동으로 제거하고 최종 CSS 파일 크기를 최소화합니다.

// tailwind.config.js
module.exports = {
  // content 속성으로 사용되는 파일을 지정
  content: [
    './src/**/*.{js,jsx,ts,tsx}',
    './public/index.html',
  ],
  // ...기타 설정
}

Tailwind CSS와 컴포넌트 추상화

반복되는 디자인 패턴은 @apply 지시어를 사용하여 추상화할 수 있습니다.

/* styles.css */
@tailwind base;
@tailwind components;

.btn {
  @apply px-4 py-2 rounded font-semibold;
}

.btn-blue {
  @apply bg-blue-500 text-white hover:bg-blue-700;
}

@tailwind utilities;
<button class="btn btn-blue">
  버튼
</button>

Tailwind CSS와 프레임워크 통합

React와 통합

function Button({ children }) {
  return (
    <button className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
      {children}
    </button>
  );
}

Vue와 통합

<template>
  <button class="bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded">
    <slot></slot>
  </button>
</template>

Tailwind CSS의 장단점

장점 단점
빠른 개발 속도 처음에는 클래스명 외우기 어려움
일관된 디자인 HTML이 길어질 수 있음
반응형 디자인 용이 디자인 시스템 없이는 일관성 유지 어려움
커스터마이징 용이 기존 프로젝트 마이그레이션 어려움
작은 번들 크기  

Tailwind CSS는 "유틸리티 우선"이라는 혁신적인 접근 방식을 통해 웹 개발 방식을 변화시켰습니다. 클래스를 직접 HTML에 적용함으로써 CSS 파일을 오가는 시간을 줄이고, 반복적인 스타일 작성을 최소화할 수 있습니다. 특히 디자인 시스템과 결합할 때 그 효율성이 더욱 빛을 발합니다.

빠른 프로토타이핑부터 대규모 프로덕션 웹사이트까지 다양한 프로젝트에 활용할 수 있는 유연성을 갖추고 있어, 현대 웹 개발의 필수 도구로 자리잡고 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'TypeScript' 카테고리의 다른 글

React에서 브라우저 창 제어하기: 새 창 열기부터 URL 추적까지  (1) 2025.03.28
Next.js에서 cookies-next로 쿠키 관리하기  (2) 2025.03.22
Zod: TypeScript 스키마 검증  (0) 2025.02.20
React Hook Form: 폼 상태 관리  (0) 2025.02.19
Node-Cache : 서버 성능 최적화  (0) 2025.02.17
'TypeScript' 카테고리의 다른 글
  • React에서 브라우저 창 제어하기: 새 창 열기부터 URL 추적까지
  • Next.js에서 cookies-next로 쿠키 관리하기
  • Zod: TypeScript 스키마 검증
  • React Hook Form: 폼 상태 관리
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (545)
      • 상품 추천 (54)
      • MongoDB (4)
      • 하드웨어 (9)
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (128)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (50)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    codingcommunity
    ipcamera
    유니티
    list
    codingtips
    programmerlife
    Python
    C#
    믈레코비타멸균우유
    리스트
    스크립트 실행
    unity
    긴유통기한우유
    rtsp
    스크립트 실행 순서
    learntocode
    리뷰이관
    cv2
    appdevelopment
    스마트스토어리뷰
    파이썬
    리뷰관리
    programming101
    상품 리뷰 크롤링
    카페24리뷰
    셀레니움
    카페24리뷰이관
    devlife
    라떼우유
    쇼핑몰리뷰
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
tailwind CSS : 유틸리티 기반 CSS 프레임워크
상단으로

티스토리툴바