πŸ† λͺ©ν‘œ


<aside> πŸ’‘ ν˜„μž¬ TailwindCSSλ₯Ό μ΄μš©ν•΄μ„œ μŠ€νƒ€μΌμ„ ν•˜λ˜ 쀑 animation (hover: scale-1.1)을 λ”°λ‘œ css 파일둜 κ΅¬λΆ„ν•œ λ‹€μŒ μŠ€νƒ€μΌμ„ μ μš©ν•˜λŠ” μ‹μœΌλ‘œ μœ μ§€ 보수λ₯Ό 높이렀고 ν•˜κ³  있음.

</aside>

πŸ“– ν•΄κ²° λ°©μ•ˆ


  1. ν•΄λ‹Ή μŠ€νƒ€μΌμ„ μ •μ˜ν•  νŒŒμΌμ„ λ§Œλ“€μ–΄μ€€λ‹€ ex) animation.css
  2. λ§Œλ“  νŒŒμΌμ„ globalcss.css에 λΆˆλŸ¬μ™€μ„œ μ μš©ν•΄μ€€λ‹€.
  3. usage에 μ μš©ν•΄λ³Έλ‹€.
  4. tailwindcss.config.ts에 plugins에 μΆ”κ°€ν•˜μ—¬ μžλ™μ™„μ„±μ΄ λ˜λ„λ‘ λ§Œλ“€μ–΄μ€€λ‹€.

<aside> 🚫

μ£Όμ˜μ‚¬ν•­

@apply의 κ²½μš°μ—λŠ” μƒνƒœμ˜μ‘΄ 클래슀(hover, active)에 직접 μ μš©ν•  수 μ—†μœΌλ‹ˆ μ΄λŸ¬ν•œ 뢀뢄에 μœ μ˜ν•΄μ„œ μ‚¬μš©ν•˜μž

</aside>

μ΅œμ’… μ˜ˆμ‹œ)

// tailwindcss.config.ts
import type { Config } from "tailwindcss";

export default {
  ...
  plugins: [
    ({ addUtilities }) => {
      addUtilities(
        {
          ".custom-scale-auto": {
            transition: "transform 300ms",
          },
          ".custom-scale-auto:hover": {
            transform: "scale(1.1)", // hover μƒνƒœμ—μ„œ scale 1.1
          },
          ".custom-scale-auto:active": {
            transform: "scale(0.95)", // active μƒνƒœμ—μ„œ scale 0.95
          },
        },
        ["responsive", "hover", "active"] // responsive, hover, active μƒνƒœ 지원
      );
    },
  ],
} satisfies Config;

// animation.css
@layer utilities {
  .custom-scale-auto {
    @apply transition-transform duration-300;
  }
  .custom-scale-auto:hover {
    @apply scale-110; /* hover μ‹œ scale 1.1 */
  }
  .custom-scale-auto:active {
    transform: scale(0.95); /* active μ‹œ scale 0.95 직접 μ •μ˜ */
  }
}

// globalcss.css
@tailwind base;
@tailwind components;
@tailwind utilities;

@import "../styles/animation.css";

...

πŸŽ™οΈ μ‹œλ„