Tailwind CSS로 리액트 스타일링
리액트 애플리케이션을 스타일링할 때, Tailwind CSS는 유연하고 효율적인 도구로 자리 잡고 있습니다. 이 포스팅에서는 Tailwind CSS를 사용하여 리액트 컴포넌트를 스타일링하는 방법을 단계별로 설명하겠습니다.
Tailwind CSS의 중요성
Tailwind CSS는 유틸리티 퍼스트(Utility-First) CSS 프레임워크로, 다음과 같은 장점을 제공합니다:
- 모듈성: 필요한 스타일만을 적용하여 코드의 재사용성을 높일 수 있습니다.
- 유연성: 클래스 이름을 통해 스타일을 직접 정의할 수 있어, 커스터마이징이 용이합니다.
- 생산성 향상: 사전 정의된 유틸리티 클래스를 사용하여 빠르게 스타일링을 할 수 있습니다.
프로젝트 설정 및 Tailwind CSS 설치
Tailwind CSS를 리액트 프로젝트에 통합하기 위해 필요한 패키지를 설치합니다. 다음 명령어를 사용하여 프로젝트를 생성하고 Tailwind CSS를 설치합니다.
npx create-react-app my-tailwind-app --template typescript
cd my-tailwind-app
npm install tailwindcss postcss autoprefixer
npx tailwindcss init -p
Tailwind CSS 구성
tailwind.config.js
파일을 수정하여 Tailwind CSS를 구성합니다.
// tailwind.config.js
module.exports = {
purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
};
Tailwind CSS 초기화
src/index.css
파일을 수정하여 Tailwind CSS를 초기화합니다.
/* src/index.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
Tailwind CSS를 사용한 컴포넌트 스타일링
이제 Tailwind CSS를 사용하여 리액트 컴포넌트를 스타일링하는 방법을 살펴보겠습니다.
버튼 컴포넌트 스타일링
먼저, 버튼 컴포넌트를 스타일링하는 예제를 살펴보겠습니다.
// src/components/Button.tsx
import React from 'react';
interface ButtonProps {
label: string;
onClick: () => void;
}
const Button: React.FC<ButtonProps> = ({ label, onClick }) => {
return (
<button
className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
onClick={onClick}
>
{label}
</button>
);
};
export default Button;
위 코드에서는 className
속성을 사용하여 Tailwind CSS 유틸리티 클래스를 적용합니다. bg-blue-500
, hover:bg-blue-700
, text-white
, font-bold
, py-2
, px-4
, rounded
클래스가 버튼의 스타일을 정의합니다.
카드 컴포넌트 스타일링
다음으로, 카드 컴포넌트를 스타일링하는 예제를 살펴보겠습니다.
// src/components/Card.tsx
import React from 'react';
interface CardProps {
title: string;
description: string;
}
const Card: React.FC<CardProps> = ({ title, description }) => {
return (
<div className="max-w-sm rounded overflow-hidden shadow-lg">
<div className="px-6 py-4">
<div className="font-bold text-xl mb-2">{title}</div>
<p className="text-gray-700 text-base">{description}</p>
</div>
</div>
);
};
export default Card;
위 코드에서는 max-w-sm
, rounded
, overflow-hidden
, shadow-lg
, px-6
, py-4
, font-bold
, text-xl
, mb-2
, text-gray-700
, text-base
클래스가 카드의 스타일을 정의합니다.
레이아웃 컴포넌트 스타일링
마지막으로, 레이아웃 컴포넌트를 스타일링하는 예제를 살펴보겠습니다.
// src/components/Layout.tsx
import React from 'react';
const Layout: React.FC = ({ children }) => {
return (
<div className="min-h-screen bg-gray-100 flex flex-col justify-center items-center">
{children}
</div>
);
};
export default Layout;
위 코드에서는 min-h-screen
, bg-gray-100
, flex
, flex-col
, justify-center
, items-center
클래스가 레이아웃의 스타일을 정의합니다.
전체 애플리케이션 구성
이제 작성한 컴포넌트를 메인 애플리케이션에 통합합니다.
// src/App.tsx
import React from 'react';
import Button from './components/Button';
import Card from './components/Card';
import Layout from './components/Layout';
const App: React.FC = () => {
const handleClick = () => {
alert('Button clicked!');
};
return (
<Layout>
<h1 className="text-3xl font-bold mb-6">React with Tailwind CSS</h1>
<Card title="Card Title" description="This is a description of the card." />
<Button label="Click Me" onClick={handleClick} />
</Layout>
);
};
export default App;
위 코드에서는 Layout
, Card
, Button
컴포넌트를 사용하여 전체 애플리케이션을 구성하고, Tailwind CSS 유틸리티 클래스를 적용하여 스타일을 지정합니다.
주요 포인트 요약 및 추가 학습 자료
이 포스팅에서는 Tailwind CSS를 사용하여 리액트 컴포넌트를 스타일링하는 방법에 대해 살펴보았습니다. Tailwind CSS는 유틸리티 퍼스트 CSS 프레임워크로, 모듈성과 유연성을 제공하여 효율적으로 스타일링을 할 수 있습니다. 추가로 학습할 자료는 다음 링크를 참고하시기 바랍니다: