CSS3

 

 

 

 

 

 

 

 

 

 

소스 :

https://github.dev/braverokmc79/tailwind-shortly-website

 

https://braverokmc79.github.io/tailwind-shortly-website/

 

 

 

1.네비게이션 바 구성

1. 전체 네비게이션 바 구성

네비게이션 바는 nav 태그로 감싸며, Tailwind CSS의 container와 mx-auto를 사용해 중앙에 배치하고 p-6으로 패딩을 추가합니다.

 

<!-- 네비게이션 컨테이너 -->
<nav class="relative container mx-auto p-6">

 

 

2. 로고와 왼쪽 메뉴의 Flexbox 구성

flex를 사용해 로고와 메뉴를 하나의 컨테이너로 묶습니다. 메뉴 항목은 lg:flex로 설정해 작은 화면에서는 숨기고, 큰 화면에서는 보이도록 설정합니다.

  <!-- 모든 항목을 위한 플렉스 컨테이너 -->
  <div class="flex items-center justify-between">
    <!-- 로고/메뉴를 위한 플렉스 컨테이너 -->
    <div class="flex items-center space-x-20">
      <!-- 로고 -->
      <img src="images/logo.svg" alt="로고" />
      <!-- 왼쪽 메뉴 -->
      <div class="hidden space-x-8 font-bold lg:flex">
        <a href="#" class="text-grayishViolet hover:text-veryDarkViolet">기능</a>
        <a href="#" class="text-grayishViolet hover:text-veryDarkViolet">가격</a>
        <a href="#" class="text-grayishViolet hover:text-veryDarkViolet">자원</a>
      </div>
    </div>

 

  • hidden 클래스를 사용해 기본적으로 숨기고, lg:flex로 큰 화면에서만 보이게 설정합니다.
  • 각 링크는 기본 색상을 text-grayishViolet으로 설정하고, 호버 시 hover:text-veryDarkViolet으로 색상이 변경됩니다.

3. 오른쪽 버튼 메뉴

로그인과 가입하기 버튼을 오른쪽에 배치하고, 작은 화면에서는 숨기고(hidden), 큰 화면에서만 표시되도록 설정합니다.

    <!-- 오른쪽 버튼 메뉴 -->
    <div class="hidden items-center space-x-6 font-bold text-grayishViolet lg:flex">
      <div class="hover:text-veryDarkViolet">로그인</div>
      <a href="#" class="px-8 py-3 font-bold text-white bg-cyan rounded-full hover:opacity-70">가입하기</a>
    </div>

 

  • 가입하기 버튼은 bg-cyan으로 배경을 설정하고, 텍스트는 text-white로 설정하여 깔끔한 버튼 스타일을 적용합니다.
  • 호버 시 hover:opacity-70로 투명도를 조절해 사용자가 버튼에 커서를 올릴 때 시각적인 피드백을 줍니다.

 

 

4. 햄버거 메뉴 (모바일용)

작은 화면에서는 햄버거 메뉴 버튼이 보이게 하고, 큰 화면에서는 숨기도록 설정합니다. 이 버튼은 클릭하면 모바일 메뉴가 열립니다.

    <!-- 햄버거 버튼 -->
    <button id="menu-btn" class="block hamburger lg:hidden focus:outline-none" type="button">
      <span class="hamburger-top"></span>
      <span class="hamburger-middle"></span>
      <span class="hamburger-bottom"></span>
    </button>
  </div>

 

  • block과 lg:hidden을 사용하여 작은 화면에서만 버튼이 보이게 설정합니다.
  • 햄버거 메뉴 버튼은 focus:outline-none을 사용해 클릭 시 외곽선이 보이지 않도록 합니다.

 

 

 

5. 모바일 메뉴

햄버거 버튼을 클릭하면 나타나는 모바일 메뉴는 absolute로 설정하여 화면 위에 떠 있도록 만들고, 배경은 bg-darkViolet으로 설정합니다.

 

  <!-- 모바일 메뉴 -->
  <div id="menu" class="absolute hidden p-6 rounded-lg bg-darkViolet left-6 right-6 top-20 z-100">
    <div class="flex flex-col items-center justify-center w-full space-y-6 font-bold text-white rounded-sm">
      <a href="#" class="w-full text-center">기능</a>
      <a href="#" class="w-full text-center">가격</a>
      <a href="#" class="w-full text-center">자원</a>
      <a href="#" class="w-full pt-6 border-t border-gray-400 text-center">로그인</a>
      <a href="#" class="w-full py-3 text-center rounded-full bg-cyan">가입하기</a>
    </div>
  </div>
</nav>

 

  • 메뉴 항목은 세로로 정렬하기 위해 flex-col을 사용하고, 각 항목 사이의 간격은 space-y-6으로 설정합니다.
  • 메뉴 배경은 bg-darkViolet, 텍스트는 text-white로 설정하여 어두운 배경에서 흰색 텍스트가 돋보이게 만듭니다.

최종 Tailwind CSS 네비게이션 바 코드

<!-- 네비게이션 컨테이너 -->
<nav class="relative container mx-auto p-6">
  <!-- 모든 항목을 위한 플렉스 컨테이너 -->
  <div class="flex items-center justify-between">
    <!-- 로고/메뉴를 위한 플렉스 컨테이너 -->
    <div class="flex items-center space-x-20">
      <!-- 로고 -->
      <img src="images/logo.svg" alt="로고" />
      <!-- 왼쪽 메뉴 -->
      <div class="hidden space-x-8 font-bold lg:flex">
        <a href="#" class="text-grayishViolet hover:text-veryDarkViolet">기능</a>
        <a href="#" class="text-grayishViolet hover:text-veryDarkViolet">가격</a>
        <a href="#" class="text-grayishViolet hover:text-veryDarkViolet">자원</a>
      </div>
    </div>

    <!-- 오른쪽 버튼 메뉴 -->
    <div class="hidden items-center space-x-6 font-bold text-grayishViolet lg:flex">
      <div class="hover:text-veryDarkViolet">로그인</div>
      <a href="#" class="px-8 py-3 font-bold text-white bg-cyan rounded-full hover:opacity-70">가입하기</a>
    </div>

    <!-- 햄버거 버튼 -->
    <button id="menu-btn" class="block hamburger lg:hidden focus:outline-none" type="button">
      <span class="hamburger-top"></span>
      <span class="hamburger-middle"></span>
      <span class="hamburger-bottom"></span>
    </button>
  </div>

  <!-- 모바일 메뉴 -->
  <div id="menu" class="absolute hidden p-6 rounded-lg bg-darkViolet left-6 right-6 top-20 z-100">
    <div class="flex flex-col items-center justify-center w-full space-y-6 font-bold text-white rounded-sm">
      <a href="#" class="w-full text-center">기능</a>
      <a href="#" class="w-full text-center">가격</a>
      <a href="#" class="w-full text-center">자원</a>
      <a href="#" class="w-full pt-6 border-t border-gray-400 text-center">로그인</a>
      <a href="#" class="w-full py-3 text-center rounded-full bg-cyan">가입하기</a>
    </div>
  </div>
</nav>

 

 

 

 

2.Hero 섹션 

1. Hero 섹션 구조 정의

<section> 태그를 사용하여 Hero 섹션을 정의하고, flex와 flex-col-reverse 클래스를 사용해 작은 화면에서는 이미지가 상단,

텍스트가 하단에 오도록 배치합니다. 큰 화면에서는 flex-row로 텍스트가 왼쪽, 이미지가 오른쪽에 배치되도록 설정합니다.

<section id="hero">
  <div class="container flex flex-col-reverse mx-auto p-6 lg:flex-row">

 

  • container: Tailwind의 기본 컨테이너 클래스입니다.
  • flex: 콘텐츠를 수평 또는 수직으로 정렬하기 위해 사용합니다.
  • flex-col-reverse: 작은 화면에서는 이미지가 위에, 텍스트가 아래에 배치됩니다.
  • lg:flex-row: 큰 화면(lg)에서는 텍스트가 왼쪽, 이미지가 오른쪽으로 배치됩니다.

 

 

 

2. 텍스트 콘텐츠 배치

텍스트 콘텐츠는 다음과 같이 h1과 p 태그로 구성되며, 작은 화면에서는 가운데 정렬, 큰 화면에서는 왼쪽 정렬되도록 합니다.

<div class="flex flex-col space-y-10 mb-44 lg:mt-16 lg:w-1/2 xl:mb-52">
  <h1 class="text-5xl font-bold text-center lg:text-6xl lg:max-w-md lg:text-left">
    단순한 링크 이상의 것
  </h1>
  <p class="text-2xl text-center text-gray-400 lg:max-w-md lg:text-left">
    브랜드 인지도를 구축하고 링크의 성과를 자세히 분석하세요.
  </p>

 

  • flex flex-col: 텍스트 요소들이 수직으로 배치됩니다.
  • space-y-10: 텍스트 요소들 간의 간격을 10으로 설정합니다.
  • text-center: 작은 화면에서 텍스트를 가운데 정렬합니다.
  • lg:text-left: 큰 화면에서는 텍스트를 왼쪽 정렬합니다.
  • lg:max-w-md: 큰 화면에서 텍스트의 최대 너비를 설정하여 가독성을 높입니다.

 

 

 

3. 버튼 디자인

버튼은 hover 상태에서 색상 변화가 일어나도록 설정합니다.

<div class="max-auto lg:mx-0">
  <button class="bg-cyan px-10 py-4 text-white font-bold text-2xl 
    rounded-full lg:mx-0 hover:bg-cyanLight focus:outline-none">
    시작하기
  </button>
</div>

 

  • bg-cyan: 버튼의 배경 색상을 Cyan으로 설정합니다.
  • hover:bg-cyanLight: 마우스를 올리면 배경색이 cyanLight로 변경됩니다.
  • px-10 py-4: 버튼의 padding 값을 설정하여 버튼의 크기를 조절합니다.

 

 

4.이미지 배치

이미지는 작은 화면에서는 화면의 중앙에, 큰 화면에서는 오른쪽에 배치됩니다.

<div class="mb-24 mx-auto md:w-180 lg:mb-0 lg:w-1/2">
  <img src="images/illustration-working.svg" alt="작업 중" />
</div>

 

  • mb-24: 작은 화면에서 하단에 여백을 추가합니다.
  • mx-auto: 이미지를 가운데 정렬합니다.
  • lg:w-1/2: 큰 화면에서는 이미지의 너비를 50%로 설정합니다

 

<!-- Hero 섹션 -->
<section id="hero">
  <div class="container flex flex-col-reverse mx-auto p-6 lg:flex-row">

    <!-- 텍스트 콘텐츠 -->
    <div class="flex flex-col space-y-10 mb-44 lg:mt-16 lg:w-1/2 xl:mb-52">
      <h1 class="text-5xl font-bold text-center lg:text-6xl lg:max-w-md lg:text-left">
        단순한 링크 이상의 것
      </h1>
      <p class="text-2xl text-center text-gray-400 lg:max-w-md lg:text-left">
        브랜드 인지도를 구축하고 링크의 성과를 자세히 분석하세요.
      </p>

      <!-- 버튼 -->
      <div class="max-auto lg:mx-0">
        <button class="bg-cyan px-10 py-4 text-white font-bold text-2xl rounded-full 
        lg:mx-0 hover:bg-cyanLight focus:outline-none">
          시작하기
        </button>
      </div>
    </div>

    <!-- 이미지 -->
    <div class="mb-24 mx-auto md:w-180 lg:mb-0 lg:w-1/2">
      <img src="images/illustration-working.svg" alt="작업 중" />
    </div>

  </div>
</section>

 

 

 

 

 

 

3.링크 단축 섹션

 

1. 링크 단축 섹션 구조 만들기

우리는 기본적으로 Tailwind의 유틸리티 클래스만 사용해서 빠르게 스타일을 적용할 수 있습니다. 먼저 HTML 구조부터 작성해보겠습니다.

 

<!-- 링크 단축 섹션 -->
<section id="shorten" class="relative bg-gray-100">
  <div class="max-w-4xl mx-auto p-6 space-y-6">

 

  • section 태그에 relative bg-gray-100 클래스를 사용하여 배경색과 상대적인 위치를 설정합니다.
  • max-w-4xl mx-auto를 사용해 컨테이너의 최대 너비를 설정하고 중앙에 배치합니다.

 

 

2. 폼(Form) 만들기

이제 링크 입력과 버튼을 포함하는 폼을 만들어보겠습니다.

<form id="link-form" class="relative flex flex-col w-full p-10 -mt-20 space-y-4 bg-darkViolet rounded-lg md:flex-row md:space-y-0 md:space-x-3">
  <input type="text" class="flex-1 p-3 border-2 rounded-lg placeholder-yellow-500 focus:outline-none" placeholder="여기에 링크 주소를 입력하세요">
  <button class="px-10 py-3 text-white bg-cyan rounded-lg hover:bg-cyanLight focus:outline-none md:py-2">
    단축하기
  </button>
</form>

 

  • flex flex-col: 플렉스 박스를 사용하여 입력란과 버튼을 세로로 배치합니다.
  • md:flex-row: 중간 화면 이상에서는 입력란과 버튼을 가로로 배치합니다.
  • space-y-4: 입력란과 버튼 사이에 세로 간격을 줍니다.
  • bg-darkViolet: 배경색을 어두운 보라색으로 설정하고, 버튼은 bg-cyan을 사용해 청록색으로 스타일링합니다.

 

 

3. 링크 출력 구조 만들기

폼 아래에는 단축된 링크와 "복사" 버튼을 만들 것입니다. 이를 위해 flex 박스를 사용해 링크와 버튼을 가로로 배치합니다.

<div class="flex flex-col items-center justify-between w-full p-6 bg-white rounded-lg md:flex-row">
  <p class="font-bold text-center text-veryDarkViolet md:text-left">https://frontendmentor.io</p>
  <div class="flex flex-col items-center justify-end flex-1 space-x-4 space-y-2 md:flex-row md:space-y-0">
    <div class="font-bold text-cyan">https://rel.ink/gxOXp9</div>
    <button class="p-2 px-8 text-white bg-cyan rounded-lg hover:opacity-70 focus:outline-none">복사</button>
  </div>
</div>

 

  • flex-col: 작은 화면에서는 링크와 버튼을 세로로 배치하고, 중간 화면 이상에서는 md:flex-row로 가로 배치합니다.
  • justify-between: 링크와 버튼 사이의 가용 공간을 균등하게 나눕니다.
  • bg-white rounded-lg: 링크 및 버튼 섹션에 흰색 배경과 둥근 모서리를 적용합니다.

 

 

4. 링크 목록 추가

다음으로는 위의 구조를 복사하여 여러 개의 링크를 출력하는 형식으로 코드를 확장할 수 있습니다. 아래는 두 번째, 세 번째 링크를 추가한 예시입니다.

 

<!-- 링크 2 -->
<div class="flex flex-col items-center justify-between w-full p-6 bg-white rounded-lg md:flex-row">
  <p class="font-bold text-center text-veryDarkViolet md:text-left">https://twitter.com/frontendmentor</p>
  <div class="flex flex-col items-center justify-end flex-1 space-x-4 space-y-2 md:flex-row md:space-y-0">
    <div class="font-bold text-cyan">https://rel.ink/gxOXp9</div>
    <button class="p-2 px-8 text-white bg-darkViolet rounded-lg hover:opacity-70 focus:outline-none">복사</button>
  </div>
</div>

<!-- 링크 3 -->
<div class="flex flex-col items-center justify-between w-full p-6 bg-white rounded-lg md:flex-row">
  <p class="font-bold text-center text-veryDarkViolet md:text-left">https://linkedin.com/frontend-mentor</p>
  <div class="flex flex-col items-center justify-end flex-1 space-x-4 space-y-2 md:flex-row md:space-y-0">
    <div class="font-bold text-cyan">https://rel.ink/gob3X9</div>
    <button class="p-2 px-8 text-white bg-cyan rounded-lg hover:opacity-70 focus:outline-none">복사</button>
  </div>
</div>

 

5. 결과 확인 및 스타일 조정

지금까지 작성한 코드를 실행하면, 작은 화면에서는 링크와 버튼이 세로로 쌓이고, 큰 화면에서는 가로로 정렬됩니다. 또한 각 링크 옆에는 복사 버튼이 있으며, 버튼을 클릭하면 링크를 복사하는 기능을 자바스크립트로 추가할 수 있습니다.

 

 

 

 

 

4.섹션 구조 및 박스 구성

 

 

 

 

1. 섹션 구조 설정

먼저, 섹션을 추가하고 ID와 배경색, 패딩 등을 Tailwind CSS 클래스를 사용하여 설정합니다.

<section id="features" class="pb-32 bg-gray-100">
  <div class="relative container flex flex-col items-start px-6 mx-auto md:flex-row md:space-x">

 

  • pb-32: 아래쪽에 32만큼 패딩을 추가.
  • bg-gray-100: 배경을 gray-100 색상으로 설정.
  • relative: 안에 위치할 절대 위치 요소(absolute)를 위해 relative를 설정.
  • container: 컨텐츠를 중앙에 배치하고 양쪽 여백을 맞추기 위한 Tailwind CSS 유틸리티 클래스.
  • flex flex-col: Flexbox를 사용하여 작은 화면에서는 세로로 정렬.
  • md:flex-row: md(medium, 중간 크기 이상의 화면)에서는 가로로 정렬.

 

 

2. 수직 및 수평 라인

작은 화면에서는 수직 라인을, 큰 화면에서는 수평 라인을 표시합니다.

  <!-- 수평 라인 (중간 화면 이상에서만 보임) -->
  <div class="hidden absolute w-10/12 top-24 left-16 h-3 bg-cyan md:block"></div>

  <!-- 수직 라인 (작은 화면에서만 보임) -->
  <div class="absolute w-2 left-1/2 h-full bg-cyan md:hidden"></div>

 

  • hidden: 기본적으로 숨김 상태.
  • absolute: 부모 요소(relative로 설정된 div)를 기준으로 절대 위치를 지정.
  • w-10/12: 전체 너비의 10/12로 설정하여 크기를 맞춤.
  • top-24, left-16: top과 left로 라인의 위치를 지정.
  • bg-cyan: 배경색을 청록색(cyan)으로 설정.
  • md:block: 중간 화면 이상에서는 수평 라인이 표시되도록 block으로 설정.
  • h-full: 수직 라인은 컨테이너의 전체 높이만큼 차지.

 

 

 

3. 박스들

박스마다 아이콘과 텍스트를 포함한 내용이 들어갑니다.

박스 1

<!-- 박스 1 -->
<div class="relative flex flex-col p-6 space-y-6 bg-white rounded-lg mt-9 md:w-1/4 md:mx-10">
  <div class="absolute -ml-10 left-1/2 -top-10 md:left-16"> 
    <div class="flex items-center justify-center w-20 h-20 rounded-full bg-veryDarkViolet">
      <img src="images/icon-brand-recognition.svg" alt="브랜드 인식 아이콘" />
    </div>
  </div>
  <h5 class="pt-6 text-xl font-bold text-center capitalize md:text-left">브랜드 인식</h5>                  
  <p class="text-center text-gray-400 md:text-left">
    모든 단축 링크를 브랜드화하여 신뢰를 얻고 브랜드 인식을 높이세요.
  </p>
</div>

 

  • relative: 아이콘 이미지를 절대 위치로 배치하기 위해 설정.
  • flex flex-col: 세로 정렬을 위한 Flexbox 설정.
  • p-6: 6만큼의 패딩을 추가.
  • space-y-6: 자식 요소 간의 간격을 6만큼 추가.
  • bg-white: 배경색을 흰색으로 설정.
  • rounded-lg: 모서리를 둥글게.
  • absolute -ml-10 left-1/2 -top-10: 아이콘을 중앙에 배치하고 위로 살짝 띄움.
  • w-20 h-20: 아이콘 컨테이너의 크기를 지정.
  • text-xl font-bold: 텍스트 크기와 두께 설정.
  • text-center: 작은 화면에서는 텍스트를 중앙 정렬하고, md:text-left를 통해 중간 크기 이상에서는 왼쪽 정렬.

박스 2 & 3

박스 2와 3은 박스 1과 구조는 동일하지만, 내용이 다르고 화면 크기 별로 약간의 오프셋을 설정합니다.

<!-- 박스 2 -->
<div class="relative flex flex-col p-6 space-y-6 bg-white rounded-lg mt-24 md:mt-8 md:w-1/4 md:mx-10">
  <!-- 아이콘 및 텍스트 -->
  <h5 class="pt-6 text-xl font-bold text-center capitalize md:text-left">상세 기록</h5>                  
  <p class="text-center text-gray-400 md:text-left">
    단축 링크의 실적을 상세히 분석하여 링크의 성과를 추적하세요.
  </p>
</div>

<!-- 박스 3 -->
<div class="relative flex flex-col p-6 space-y-6 bg-white rounded-lg mt-24 md:mt-8 md:w-1/4 md:mx-10">
  <!-- 아이콘 및 텍스트 -->
  <h5 class="pt-6 text-xl font-bold text-center capitalize md:text-left">완전 맞춤화</h5>                  
  <p class="text-center text-gray-400 md:text-left">
    사용자 정의 도메인과 맞춤형 단축 링크로 브랜드 일관성을 유지하세요.
  </p>
</div>

 

  • mt-24 md:mt-8: 작은 화면에서는 위로 24만큼 여백을 주고, 중간 화면 이상에서는 8만큼 여백을 줌으로써 박스 간 간격 조정.
  • text와 img는 박스 1과 동일한 스타일을 따름.

 

 

 

 

 

 

 

 

5.CTA 섹션

 

CTA 섹션은 버튼과 텍스트를 포함하며 배경 이미지와 스타일을 지정합니다.

<!-- CTA Section -->
<section id="cta" class="py-24 bg-dark-violet text-white text-center">
  <div class="container mx-auto flex flex-col items-center space-y-6">
    <h5 class="text-4xl font-bold">Boost your links today</h5>
    <button class="px-10 py-5 mx-auto text-2xl font-bold text-white bg-cyan rounded-full hover:bg-cyan-light md:px-3 focus:outline-none">
      Get Started
    </button>
  </div>
</section>

<!-- 스타일링에 background 이미지 추가 -->
<style>
  #cta {
    background-image: url('../images/big-boost-desktop.svg');
    background-repeat: no-repeat;
    background-size: cover;
  }
</style>

 

 

푸터 섹션

푸터 섹션은 로고, 메뉴, 그리고 소셜 링크 아이콘으로 구성됩니다.

<!-- Footer Section -->
<footer class="p-16 bg-very-dark-violet text-white">
  <div class="container mx-auto flex flex-col items-center space-y-16 md:flex-row md:justify-between md:space-y-0">
    <!-- 로고 -->
    <img src="../images/logo.svg" alt="Logo">

    <!-- 메뉴들 -->
    <div class="flex flex-col space-y-16 md:flex-row md:space-x-20">
      <!-- 메뉴 1 -->
      <div class="flex flex-col items-center w-full md:items-start">
        <h4 class="mb-5 font-bold capitalize">Features</h4>
        <ul class="flex flex-col items-center space-y-3 md:items-start">
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Link Shortening</a></li>
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Branded Links</a></li>
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Analytics</a></li>
        </ul>
      </div>
      
      <!-- 메뉴 2 -->
      <div class="flex flex-col items-center w-full md:items-start">
        <h4 class="mb-5 font-bold capitalize">Resources</h4>
        <ul class="flex flex-col items-center space-y-3 md:items-start">
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Blog</a></li>
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Developers</a></li>
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Support</a></li>
        </ul>
      </div>

      <!-- 메뉴 3 -->
      <div class="flex flex-col items-center w-full md:items-start">
        <h4 class="mb-5 font-bold capitalize">Company</h4>
        <ul class="flex flex-col items-center space-y-3 md:items-start">
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">About</a></li>
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Our Team</a></li>
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Careers</a></li>
          <li><a href="#" class="capitalize text-grayish-violet hover:text-cyan">Contact</a></li>
        </ul>
      </div>
    </div>

    <!-- 소셜 아이콘 -->
    <div class="flex space-x-6">
      <a href="#"><img src="../images/icon-facebook.svg" class="f-icon"></a>
      <a href="#"><img src="../images/icon-twitter.svg" class="f-icon"></a>
      <a href="#"><img src="../images/icon-pinterest.svg" class="f-icon"></a>
      <a href="#"><img src="../images/icon-instagram.svg" class="f-icon"></a>
    </div>
  </div>
</footer>

<!-- 아이콘 hover 스타일링 -->
<style>
  .f-icon:hover {
    filter: invert(79%) sepia(61%) saturate(464%) hue-rotate(130deg) brightness(89%) contrast(85%);
  }
</style>

 

설명

  • CTA 섹션: 배경 색상은 dark-violet, 텍스트는 중앙 정렬된 흰색, 버튼은 cyan 색상으로 라운드 처리되었습니다.
  • 푸터: 로고와 메뉴는 각각 flex를 사용하여 수직, 수평으로 배치되며 소셜 아이콘에 hover 효과를 적용했습니다.

 

 

 <!-- CTA Section -->
  <section id="cta" class="py-24 bg-darkViolet" >
    <div class="flex flex-col p-2 space-6">

      <h5 class="
      mx-auto space-y-10 text-4xl font-bold text-white text-center      
      " >
        모두의 링크 단축
      </h5>
      <button class="
        mt-5
         px-10 py-5 mx-auto text-2xl  
        font-bold text-white  rounded-full      
        bg-cyan hover:bg-cyanLight md:text-base
         md:py-3 focus:outline-none">
        시작하기
      </button>
    </div>
  </section>

  <!-- relative container mx-auto p-6 -->
<footer class="py-16 bg-veryDarkViolet">
 <div class="container p-6 mx-auto flex flex-col items-center justify-between 
  max-auto space-y-16 md:flex-row md:space-y-0 md:items-start
 ">

 <div>
  <img src="images/logo.svg" alt="">
 </div>


  <!-- 메뉴 컨테이너 -->
 <div class="flex flex-col space-y-16 md:space-x-20 md:flex-row md:space-y-0">

  <!-- 메뉴1 -->
  <div class="flex flex-col item-center w-full md:items-start"> 
      <div class="mb-5 font-bold text-white capitalize">특징</div>        
        <div class="flex flex-col items-center space-y-3 md:items-start">
          <a href="#" class="capitalize text-grayishViolet hover:text-cyan">기능</a>
          <a href="#" class="capitalize text-grayishViolet hover:text-cyan">가격</a>
          <a href="#" class="capitalize text-grayishViolet hover:text-cyan">자원</a>
        </div>

      </div>
  



  <!-- 메뉴2 -->
  <div class="flex flex-col item-center w-full md:items-start"> 
    <div class="mb-5 font-bold text-white capitalize">자원</div>        
      <div class="flex flex-col items-center space-y-3 md:items-start">
        <a href="#" class="capitalize text-grayishViolet hover:text-cyan">기능</a>
        <a href="#" class="capitalize text-grayishViolet hover:text-cyan">가격</a>
        <a href="#" class="capitalize text-grayishViolet hover:text-cyan">자원</a>
      </div>

    </div>



      <!-- 메뉴3 -->
  <div class="flex flex-col item-center w-full md:items-start"> 
    <div class="mb-5 font-bold text-white capitalize">회사</div>        
      <div class="flex flex-col items-center space-y-3 md:items-start">
        <a href="#" class="capitalize text-grayishViolet hover:text-cyan">기능</a>
        <a href="#" class="capitalize text-grayishViolet hover:text-cyan">가격</a>
        <a href="#" class="capitalize text-grayishViolet hover:text-cyan">자원</a>
      </div>

    </div>





  </div>
 </div>


 <!-- 소셜 컨테이너 -->
 <div class="flex justify-center space-x-6">
  <a href="#" class="text-white hover:text-cyan">
    <img src="images/icon-facebook.svg" alt="Facebook" />
  </a>
  <a href="#" class="text-white hover:text-cyan">
    <img src="images/icon-twitter.svg" alt="Twitter" />
  </a>
  <a href="#" class="text-white hover:text-cyan">
    <img src="images/icon-pinterest.svg" alt="Pinterest" />
  </a>
  <a href="#" class="text-white hover:text-cyan">
    <img src="images/icon-instagram.svg" alt="Instagram" />
  </a>
</div>



 </div>
</footer>

 

 

 

 

 

 

 

6.햄버거 메뉴

 

1. 햄버거 메뉴 HTML 구조

<button id="menuButton" class="block lg:hidden">
  <span class="hamburger-line"></span>
  <span class="hamburger-line"></span>
  <span class="hamburger-line"></span>
</button>

<div id="menu"
  class="absolute hidden p-6 rounded-lg bg-darkViolet
    left-6 right-6 top-20 z-100"
>
  <div class="flex flex-col items-center justify-center w-full space-y-6 font-bold text-white rounded-sm">
    <a href="#" class="w-full text-center">기능</a>
    <a href="#" class="w-full text-center">가격</a>
    <a href="#" class="w-full text-center">자원</a>
    <a href="#" class="w-full pt-6 border-t border-gray-400 text-center">로그인</a>
    <a href="#" class="w-full py-3 text-center rounded-full bg-cyan">가입하기</a>
  </div>
</div>

 

  • #menuButton은 햄버거 아이콘을 나타내는 버튼입니다. 클릭 시 메뉴를 열고 닫는 역할을 합니다.
  • #menu는 실제로 보여질 메뉴이며, 초기에는 hidden 클래스를 가지고 있어 숨겨져 있다가, 버튼 클릭 시 flex 클래스로 전환됩니다.

 

 

2. 햄버거 메뉴 CSS

햄버거 버튼을 디자인하는 CSS는 다음과 같습니다.

.hamburger-line {
  width: 24px;
  height: 3px;
  background-color: white;
  margin: 4px 0;
  transition: all 0.3s ease;
  position: relative;
}

#menuButton.open .hamburger-line:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

#menuButton.open .hamburger-line:nth-child(2) {
  opacity: 0;
}

#menuButton.open .hamburger-line:nth-child(3) {
  transform: rotate(-45deg) translate(5px, -5px);
}

 

  • 각 햄버거 라인은 width: 24px; height: 3px;으로 설정되어 있으며, #menuButton이 open 클래스를 가질 때 첫 번째와 세 번째 라인은 회전되어 X 모양이 됩니다. 중간 라인은 숨겨집니다.

 

3. 자바스크립트를 이용한 메뉴 토글

document.getElementById('menuButton').addEventListener('click', function() {
  this.classList.toggle('open');
  const menu = document.getElementById('menu');
  menu.classList.toggle('hidden');
  menu.classList.toggle('flex');
});

 

  • menuButton을 클릭하면 open 클래스가 토글되며 햄버거 버튼이 X 모양으로 변경됩니다.
  • 동시에 #menu 요소의 hidden 클래스가 제거되고 flex 클래스를 추가하여 메뉴가 화면에 나타나도록 합니다.

 

 

4. 전체적인 흐름

  • 사용자가 햄버거 버튼을 클릭하면 메뉴가 화면에 표시되고, 다시 클릭하면 메뉴가 숨겨집니다.

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

여자는 불합리한 신앙에 말려들기 쉽다. -탈무드

댓글 ( 0)

댓글 남기기

작성