Skeleton.tsx

Skeleton.tsx

基本信息

  • 类型: React 组件 (shadcn/ui)
  • 路径: ./src/components/ui/skeleton.tsx

功能描述

骨架屏组件,用于内容加载时的占位显示。带有脉冲动画效果。

导出内容

  • Skeleton - 骨架屏组件

Props 接口

Skeleton

属性类型必填默认值说明
classNamestring-自定义CSS类名(控制尺寸和形状)
...propsReact.ComponentProps<'div'>-div原生属性

依赖

  • @/lib/utils - 工具函数 (cn)

使用示例

import { Skeleton } from "@/components/ui/skeleton";

// 基础用法
<Skeleton className="h-4 w-[250px]" />

// 卡片骨架
<div className="flex flex-col space-y-3">
  <Skeleton className="h-[125px] w-[250px] rounded-xl" />
  <div className="space-y-2">
    <Skeleton className="h-4 w-[250px]" />
    <Skeleton className="h-4 w-[200px]" />
  </div>
</div>

// 头像 + 文本骨架
<div className="flex items-center space-x-4">
  <Skeleton className="h-12 w-12 rounded-full" />
  <div className="space-y-2">
    <Skeleton className="h-4 w-[150px]" />
    <Skeleton className="h-4 w-[100px]" />
  </div>
</div>

// 实际使用场景
function CardDemo({ loading, data }) {
  if (loading) {
    return (
      <div className="p-4 border rounded-lg">
        <Skeleton className="h-6 w-1/2 mb-2" />
        <Skeleton className="h-4 w-full" />
        <Skeleton className="h-4 w-2/3 mt-2" />
      </div>
    );
  }
  return (
    <div className="p-4 border rounded-lg">
      <h3>{data.title}</h3>
      <p>{data.description}</p>
    </div>
  );
}
← 返回目录