🗂

【React】Tailwindで美しいスケルトンを作りたい

2024/09/16に公開

Shadcn/uiのスケルトンが微妙だったので改良してみました。
Tailwindの環境さえあればどこでも再現できると思います!

components/skeleton.tsx
import { cn } from "@/lib/utils";

function Skeleton({
  className,
  ...props
}: React.HTMLAttributes<HTMLDivElement>) {
  return (
    <div
      className={cn(
        "relative bg-gray-100 overflow-hidden before:content-[''] before:absolute before:w-full before:h-full before:bg-gradient-to-r before:from-transparent before:via-gray-300 before:to-transparent before:animate-ltr-loop",
        className
      )}
      {...props}
    />
  );
}

export { Skeleton };
tailwind.config.ts
// ...
extend: {
  // ...
  animation: {
    "ltr-loop": "ltr 2s ease infinite",
  },
  keyframes: {
    ltr: {
      from: { transform: "translateX(-100%)" },
      to: { transform: "translateX(100%)" },
    },
  },
}

Discussion