CSS3

 

 

 

 

 

 

 

 

 

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를 사용하여 이런 스타일링을 할 때는:

  1. HTML 구조 설계: 먼저 기본 HTML 구조를 설계합니다.
  2. Tailwind 클래스 적용: 각 요소에 Tailwind의 유틸리티 클래스를 적용하여 스타일을 지정합니다.
  3. 유연한 레이아웃: 미디어 쿼리(md:, lg: 등)를 활용해 반응형 레이아웃을 구현합니다.
  4. 호버 및 그룹 호버: 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>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

천재란 다름아닌, 본질에 대해 자신이 있고, 그것을 완전한 경지에 도달한 기법으로써 만들어내는 자를 말하는 것입니다. 본질적인 인간을 가리키는 말입니다. -로댕

댓글 ( 0)

댓글 남기기

작성