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: 폼 상태 관리
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (730)
      • 스마트팜 (1)
      • 상품 추천 (223)
      • DataBase (0)
        • MongoDB (4)
        • PostgreSQL (0)
      • 하드웨어 (19)
      • 일기장 (4)
      • 파이썬 (131)
        • Basic (42)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (5)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • 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)
  • 인기 글

  • 태그

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

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

티스토리툴바