TypeScript

3D 카드 플립 효과로 배우는 실전 Tailwind 활용법

코샵 2024. 11. 20. 10:03
반응형

소개

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 구현도 효율적으로 할 수 있습니다.