

1. HTML 구조와 Tailwind CSS 적용
HTML 구조를 먼저 작성한 후 Tailwind CSS의 유틸리티 클래스를 적용하여 스타일을 지정합니다. Tailwind는 유틸리티 클래스 기반으로 작동하므로, 각 HTML 요소에 클래스를 추가하여 스타일을 정의할 수 있습니다.
1.1 전체 컨테이너 설정
전체 레이아웃을 중앙에 배치하기 위해 flex, items-center, justify-center, min-h-screen, bg-slate-100 클래스를 사용하여 화면 중앙에 정렬된 컨테이너를 만듭니다.
<div class="flex items-center justify-center min-h-screen bg-slate-100">
1.2 카드 컨테이너 설정
카드 컨테이너는 제품 정보를 담는 부분입니다. flex, flex-col, p-6, m-3, space-y-10, bg-white, rounded-2xl, shadow-2xl, md:flex-row, md:space-y-0, md:space-x-10, md:m-0, md:p-16 클래스들을 사용하여 카드의 레이아웃과 스타일을 지정합니다.
<div class="flex flex-col p-6 m-3 space-y-10 bg-white rounded-2xl shadow-2xl md:flex-row md:space-y-0 md:space-x-10 md:m-0 md:p-16">
1.3 이미지 섹션
제품 이미지를 보여주는 부분으로, w-60, hover:scale-105 클래스를 사용하여 이미지 크기와 호버 시 확대되는 효과를 적용합니다.
<div>
<img src="images/headphone.png" alt="헤드폰 이미지" class="mx-auto duration-200 w-60 hover:scale-105" />
</div>
1.4 내용 섹션
제품 정보(레이블, 제목, 가격, 재고 상태 등)를 표시하는 섹션입니다. 각 부분에 대해 flex, flex-col, space-y-3, text-center, md:text-left, max-w-sm, text-2xl, font-medium, text-5xl, font-bold, text-gray-400, text-sm, font-light 등의 클래스를 사용하여 적절한 간격과 스타일을 적용합니다.
<div class="flex flex-col space-y-6">
<!-- 레이블 및 제목 섹션 -->
<div class="flex flex-col mb-4 space-y-3 text-center md:text-left">
<div>
<div class="inline-block px-3 py-1 text-sm text-white bg-black rounded-full">
무료 배송
</div>
</div>
<!-- 제목 -->
<div class="max-w-sm text-2xl font-medium">
레이저 크라켄 키티 에디션 게이밍 헤드셋 퀄츠
</div>
</div>
<!-- 가격 섹션 -->
<div class="flex flex-col mb-4 space-y-3 text-center md:text-left">
<p class="line-through">$799</p>
<p class="text-5xl font-bold">$599</p>
<p class="text-sm font-light text-gray-400">
이 할인은 4월 3일까지 유효하며, 재고가 소진될 때까지 유효합니다!
</p>
</div>
</div>
1.5 버튼 섹션
버튼 섹션에서는 group, group-hover, bg-blue-700, text-white, border-b-8, rounded-lg, transition-all, duration-150, hover:bg-opacity-30, hover:shadow-lg, hover:-translate-y-0.5 등의 클래스를 사용하여 버튼의 스타일과 호버 효과를 구현합니다. group 클래스는 자식 요소에 호버 효과를 전달하기 위해 사용됩니다.
<div class="group">
<button class="w-full transition-all duration-150 bg-blue-700 text-white border-b-8 border-b-blue-700 rounded-lg group-hover:border-t-8 group-hover:border-b-0 group-hover:bg-blue-700 group-hover:border-t-blue-700 group-hover:shadow-lg">
<div class="px-8 py-4 duration-150 bg-blue-500 rounded-lg group-hover:bg-blue-700">
장바구니에 담기
</div>
</button>
</div>
2. 개발 방법 종합
Tailwind CSS를 사용하여 이런 스타일링을 할 때는:
- HTML 구조 설계: 먼저 기본 HTML 구조를 설계합니다.
- Tailwind 클래스 적용: 각 요소에 Tailwind의 유틸리티 클래스를 적용하여 스타일을 지정합니다.
- 유연한 레이아웃: 미디어 쿼리(md:, lg: 등)를 활용해 반응형 레이아웃을 구현합니다.
- 호버 및 그룹 호버: hover:와 group-hover: 클래스를 사용해 사용자 인터랙션을 추가합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://cdn.tailwindcss.com"></script>
<title>제품 모달</title>
</head>
<body>
<!-- 전체 컨테이너 -->
<div class="flex items-center justify-center min-h-screen bg-slate-100">
<!-- 카드 컨테이너 -->
<div
class="flex flex-col p-6 m-3 space-y-10 bg-white rounded-2xl shadow-2xl md:flex-row md:space-y-0 md:space-x-10 md:m-0 md:p-16"
>
<!-- 이미지 섹션 -->
<div>
<img
src="images/headphone.png"
alt="헤드폰 이미지"
class="mx-auto duration-200 w-60 hover:scale-105"
/>
</div>
<!-- 내용 섹션 -->
<div class="flex flex-col space-y-6">
<!-- 레이블 및 제목 섹션 -->
<div class="flex flex-col mb-4 space-y-3 text-center md:text-left">
<div>
<div
class="inline-block px-3 py-1 text-sm text-white bg-black rounded-full"
>
무료 배송
</div>
</div>
<!-- 제목 -->
<div class="max-w-sm text-2xl font-medium">
레이저 크라켄 키티 에디션 게이밍 헤드셋 퀄츠
</div>
</div>
<!-- 가격 섹션 -->
<div class="flex flex-col mb-4 space-y-3 text-center md:text-left">
<p class="line-through">₩7,990</p>
<p class="text-5xl font-bold">₩5,990</p>
<p class="text-sm font-light text-gray-400">
이 할인은 4월 3일까지 유효하며, 재고가 소진될 때까지 유효합니다!
</p>
</div>
<!-- 버튼 그룹 -->
<div class="group">
<button
class="w-full transition-all duration-150 bg-blue-700 text-white border-b-8 border-b-blue-700 rounded-lg group-hover:border-t-8 group-hover:border-b-0 group-hover:bg-blue-700 group-hover:border-t-blue-700 group-hover:shadow-lg"
>
<div
class="px-8 py-4 duration-150 bg-blue-500 rounded-lg group-hover:bg-blue-700"
>
장바구니에 담기
</div>
</button>
</div>
<!-- 재고 상태 -->
<div class="flex items-center space-x-3 group">
<div
class="w-3 h-3 bg-green-400 rounded-full group-hover:animate-ping"
></div>
<div class="text-sm">50+ 개의 재고 있음</div>
</div>
<!-- 하단 버튼 컨테이너 -->
<div
class="flex flex-col space-y-4 md:space-y-0 md:space-x-4 md:flex-row"
>
<button
class="flex items-center justify-center py-3 px-5 space-x-3 border-2 border-gray-300 rounded-lg shadow-sm hover:bg-opacity-30 hover:shadow-lg hover:-translate-y-0.5 transition-all duration-150"
>
<img src="images/weight.png" alt="무게 아이콘" class="w-8" />
<span>장바구니에 담기</span>
</button>
<button
class="flex items-center justify-center py-3 px-5 space-x-3 border-2 border-gray-300 rounded-lg shadow-sm hover:bg-opacity-30 hover:shadow-lg hover:-translate-y-0.5 transition-all duration-150"
>
<img src="images/heart.png" alt="하트 아이콘" class="w-8" />
<span>위시리스트에 추가</span>
</button>
</div>
</div>
</div>
</div>
</body>
</html>













댓글 ( 0)
댓글 남기기