Tailwind CSS로 흐릿한 애니메이션 모양을 만드는 방법

23399 단어 tailwindcss


이 기사에서는 Tailwind CSS를 사용하여 흐릿한 애니메이션 배경 모양을 만드는 방법을 살펴보겠습니다. CSS 필터, 혼합 혼합 모드 및 사용자 지정 애니메이션을 조합하여 수행합니다.

시작하겠습니다.

그러나 그 전에 여기에 우리가 만들려는 것에 대한 약간의 데모가 있습니다.

먼저 Tailwind CSS로 Next.js 프로젝트를 생성합니다.



npx create-next-app -e with-tailwindcss my-project-name



이제 배경에서 애니메이션 배경 모양의 효과를 낼 수 있도록 몇 가지 목업 디자인을 만들 것입니다.

index.js 안에 다음 코드를 작성합니다.


import Head from 'next/head'

export default function Home() {
  return (
    <div className="flex min-h-screen bg-gray-50 flex-col items-center justify-center py-2">
      <Head>
        <title>Create Next App</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
           <h1 className="text-5xl absolute top-6 font-extrabold text-violet-500">Animated Blurry Background Shapes</h1>
      <div className="bg-gray-50 w-full flex items-center justify-center px-16">
  <div className="relative w-full max-w-xl">

    /////// Add the three divs below this comment /////////


    <div className="m-8 relative space-y-4">
      <div className="p-5 bg-white rounded-lg flex items-center justify-between space-x-8">
        <div className="flex-1">
          <div className="h-4 w-48 bg-gray-300 rounded"></div>
        </div>
        <div>
          <div className="w-24 h-6 rounded-lg bg-purple-300"></div>
        </div>
      </div>
      <div className="p-5 bg-white rounded-lg flex items-center justify-between space-x-8">
        <div className="flex-1">
          <div className="h-4 w-56 bg-gray-300 rounded"></div>
        </div>
        <div>
          <div className="w-20 h-6 rounded-lg bg-yellow-300"></div>
        </div>
      </div>
      <div className="p-5 bg-white rounded-lg flex items-center justify-between space-x-8">
        <div className="flex-1">
          <div className="h-4 w-44 bg-gray-300 rounded"></div>
        </div>
        <div>
          <div className="w-28 h-6 rounded-lg bg-pink-300"></div>
        </div>
      </div>
    </div>
  </div>
</div>
    </div>
  )
}



이제 배경색을 bg-gray-50으로 변경하고 흐릿한 애니메이션 모양을 만드는 데 집중할 수 있도록 div에 불투명도를 0으로 지정하여 이 디자인을 숨길 것입니다.

그런 다음 배경색이 다른 동일한 모양의 세 개의 div를 만들고 상위 div에도 상대 클래스를 할당합니다.

그리고 디자인은 다음과 같이 보일 것입니다.


흐릿한 배경 모양


<div className="absolute top-0 -left-4 w-72 h-72 bg-purple-300 rounded-full mix-blend-multiply filter blur-xl opacity-70 "></div>
    <div className="absolute top-0 -right-4 w-72 h-72 bg-yellow-300 rounded-full mix-blend-multiply filter blur-xl opacity-70 "></div>
    <div className="absolute -bottom-8 left-20 w-72 h-72 bg-pink-300 rounded-full mix-blend-multiply filter blur-xl opacity-70 "></div>



그런 다음 이러한 모양을 흐리게 만들고 세 가지 색상을 혼합하기 위해 세 가지 클래스 mix-blend-multiply , filter , blur-xl 을 세 개의 div 각각에 추가하고 불투명도-70 클래스도 추가하여 깔끔하게 보이도록 합니다.

이제 코드는 다음과 같습니다.


import Head from 'next/head'

export default function Home() {
  return (
    <div className="flex min-h-screen bg-gray-50 flex-col items-center justify-center py-2">
      <Head>
        <title>Create Next App</title>
        <link rel="icon" href="/favicon.ico" />
      </Head>
           <h1 className="text-5xl absolute top-6 font-extrabold text-violet-500">Animated Blurry Background Shapes</h1>
      <div className="bg-gray-50 w-full flex items-center justify-center px-16">
  <div className="relative w-full max-w-xl">
    <div className="absolute top-0 -left-4 w-72 h-72 bg-purple-300 rounded-full opacity-70 "></div>
    <div className="absolute top-0 -right-4 w-72 h-72 bg-yellow-300 rounded-full opacity-70 "></div>
    <div className="absolute -bottom-8 left-20 w-72 h-72 bg-pink-300 rounded-full opacity-70 "></div>
    <div className="m-8 relative space-y-4 opacity-0">
      <div className="p-5 bg-white rounded-lg flex items-center justify-between space-x-8">
        <div className="flex-1">
          <div className="h-4 w-48 bg-gray-300 rounded"></div>
        </div>
        <div>
          <div className="w-24 h-6 rounded-lg bg-purple-300"></div>
        </div>
      </div>
      <div className="p-5 bg-white rounded-lg flex items-center justify-between space-x-8">
        <div className="flex-1">
          <div className="h-4 w-56 bg-gray-300 rounded"></div>
        </div>
        <div>
          <div className="w-20 h-6 rounded-lg bg-yellow-300"></div>
        </div>
      </div>
      <div className="p-5 bg-white rounded-lg flex items-center justify-between space-x-8">
        <div className="flex-1">
          <div className="h-4 w-44 bg-gray-300 rounded"></div>
        </div>
        <div>
          <div className="w-28 h-6 rounded-lg bg-pink-300"></div>
        </div>
      </div>
    </div>
  </div>
</div>
    </div>
  )
}



그리고 디자인은 다음과 같이 보일 것입니다.


애니메이션 흐린 배경

그래서 마지막으로 burry 모양에 애니메이션을 추가하는 것입니다.

이를 위해 tailwindcss.config.js를 열고 다음과 같이 blob 애니메이션을 추가합니다.


module.exports = {
  theme: {
    extend: {
      animation: {
        blob: "blob 7s infinite",
      },
      keyframes: {
        blob: {
          "0%": {
            transform: "translate(0px, 0px) scale(1)",
          },
          "33%": {
            transform: "translate(30px, -50px) scale(1.1)",
          },
          "66%": {
            transform: "translate(-20px, 20px) scale(0.9)",
          },
          "100%": {
            transform: "tranlate(0px, 0px) scale(1)",
          },
        },
      },
    },
  },
  variants: {
    extend: {},
  },
  plugins: [],
};



이제 프로젝트가 거의 마무리되었지만 한 가지 문제가 있습니다.

문제는 모든 흐릿한 배경이 함께 움직이는데 우리는 그것을 원하지 않습니다.

따라서 이 문제를 극복하기 위해 다른 두 div의 애니메이션을 지연시킬 것입니다.

이를 위해 스타일 폴더 내의 global.css 파일을 열고 이러한 클래스를 추가합니다.


@tailwind base;
@tailwind components;
@tailwind utilities;

@layer utilities {
  .animation-delay-2000 {
    animation-delay: 2s;
  }
  .animation-delay-4000 {
    animation-delay: 4s;
  }
}



이제 animate-blob 클래스와 이러한 클래스를 다음과 같이 2nd 및 3rd div에 추가합니다.


<div className="absolute top-0 -left-4 w-72 h-72 bg-purple-300 rounded-full mix-blend-multiply filter blur-xl opacity-70 animate-blob ">
</div>
<div className="absolute top-0 -right-4 w-72 h-72 bg-yellow-300 rounded-full mix-blend-multiply filter blur-xl opacity-70 animate-blob animation-delay-2000">
</div>
<div className="absolute -bottom-8 left-20 w-72 h-72 bg-pink-300 rounded-full mix-blend-multiply filter blur-xl opacity-70 animate-blob animation-delay-4000">
</div>



그리고 짜잔 🎉🎉 우리는 이 프로젝트를 한 시간도 채 안되어 구축합니다.

결론



다음 프로젝트를 위해 이 흐릿한 애니메이션 배경 모양을 만들 수 있기를 바랍니다. 이 프로젝트가 마음에 든다면 저를 팔로우하고 공유해주세요 😉.

이 프로젝트가 마음에 드셨으면 좋겠고 ✌️ 이 블로그 게시물을 공유해 주시면 감사하겠습니다.

이것이 도움이 되었다고 생각되면 제 블로그 웹사이트nextjsdev.com를 방문하여 Twitter에서 저를 팔로우하고 LinkedIn에서 저와 연결하십시오.

어딘가에 갇혀 솔루션을 찾을 수 없는 경우 여기에서 완성된Github Repo을 확인할 수 있습니다.

시간을 내어 이 프로젝트를 읽어주셔서 감사합니다. 마음에 들면 Twitter, Facebook 또는 기타 소셜 미디어에서 공유하고 저를 태그해 주세요.

다음 블로그에서 만나요✌️. 그때까지 돌보고 프로젝트를 계속 구축하십시오.

유용한 링크:
  • Next.js and Tailwind Installation Docs
  • Github link for project

  • 나와 연결:


  • Facebook Link
  • Github Link
  • 좋은 웹페이지 즐겨찾기