소개
Tailwind CSS는 유틸리티 우선 접근방식의 CSS 프레임워크입니다. 이번 글에서는 볼링공 카드의 3D 플립 효과 구현을 통해 Tailwind CSS의 실전 활용법을 자세히 알아보겠습니다.
기본 레이아웃 구성
기본적인 카드 레이아웃을 구성하는 클래스들입니다.
// 카드 컨테이너
className="group h-full"
// 기본 스타일링
className="w-full h-full" // 너비와 높이 100%
className="relative" // 자식 요소의 위치 기준점
className="absolute" // 부모 요소 기준 절대 위치
3D 트랜스폼 효과
3D 카드 플립 효과를 구현하는 클래스들입니다.
// 3D 효과 기본 설정
className="transform-style-preserve-3d" // 3D 공간 보존
className="perspective-1000" // 3D 효과의 깊이감
// 트랜지션 효과
className="transition-transform duration-700" // 변환 시 0.7초 동안 애니메이션
// 회전 효과
className={`${isFlipped ? 'rotate-y-180' : ''}`} // Y축 180도 회전
// 뒷면 처리
className="backface-hidden" // 뒷면 숨김 처리
반응형 디자인
화면 크기에 따라 다르게 적용되는 스타일입니다.
// 패딩 반응형 처리
className="p-2 sm:p-3 md:p-4"
// - 기본: p-2 (0.5rem)
// - sm(640px 이상): p-3 (0.75rem)
// - md(768px 이상): p-4 (1rem)
// 텍스트 크기 반응형
className="text-base sm:text-lg md:text-xl"
// - 기본: text-base (1rem)
// - sm: text-lg (1.125rem)
// - md: text-xl (1.25rem)
이미지 최적화
이미지 관련 스타일링과 최적화 클래스입니다.
// 이미지 컨테이너
className="aspect-square" // 1:1 비율 유지
className="overflow-hidden" // 넘치는 부분 숨김
// 이미지 호버 효과
className="hover:scale-105 transition-transform duration-200"
// - hover 시 5% 확대
// - 0.2초 동안 부드러운 전환
배지 스타일링
정보를 표시하는 배지의 스타일링입니다.
// 배지 기본 스타일
className="px-2 py-1 bg-blue-100 text-blue-800 text-xs rounded"
// - 좌우 패딩 0.5rem, 상하 패딩 0.25rem
// - 연한 파란색 배경
// - 진한 파란색 텍스트
// - 작은 글씨
// - 둥근 모서리
// 배지 컨테이너
className="flex flex-wrap gap-2"
// - 요소들을 가로로 배치
// - 자동 줄바꿈
// - 요소 간 0.5rem 간격
텍스트 스타일링
텍스트 관련 스타일링입니다.
// 제목 스타일
className="font-semibold mb-2 line-clamp-1"
// - 글씨 굵기 증가
// - 아래쪽 마진 0.5rem
// - 한 줄로 제한 (말줄임표 처리)
// 설명 텍스트
className="text-sm text-gray-600"
// - 작은 글씨 크기
// - 회색 계열 텍스트
그림자 효과
요소에 깊이감을 주는 그림자 효과입니다.
className="hover:shadow-lg transition-shadow"
// - 호버 시 큰 그림자 효과
// - 부드러운 그림자 전환 효과
실제 사용 예제
전체 컴포넌트에서의 활용 예시입니다.
<div className="group h-full">
<div className="relative transform-style-preserve-3d transition-transform duration-700">
{/* 카드 앞면 */}
<Card className="absolute w-full h-full backface-hidden">
<div className="aspect-square overflow-hidden">
<img className="w-full h-full hover:scale-105 transition-transform duration-200" />
</div>
</Card>
{/* 카드 뒷면 */}
<Card className="absolute w-full h-full backface-hidden rotate-y-180">
{/* 뒷면 내용 */}
</Card>
</div>
</div>
결론
Tailwind CSS는 유틸리티 클래스를 통해 빠르고 효율적인 스타일링을 가능하게 합니다. 특히 반응형 디자인, 트랜지션 효과, 호버 상태 등을 직관적으로 구현할 수 있어 생산성을 크게 높일 수 있습니다. 이러한 장점들을 잘 활용하면 복잡한 UI 구현도 효율적으로 할 수 있습니다.
'TypeScript' 카테고리의 다른 글
회원가입 폼 쉽게 만들기 : react-hook-form (1) | 2024.11.22 |
---|---|
[Next.js 실전] Image 컴포넌트로 웹 성능 최적화하기 (0) | 2024.11.18 |
[React 최적화] 메모이제이션 완벽 가이드 - useMemo, useCallback, React.memo 실전 활용법 (0) | 2024.11.17 |
데이터베이스 API 구현하기 : SQLite와 타입 안전성 (7) | 2024.11.17 |
React에서 Tailwind CSS 활용하기 (1) | 2024.11.15 |