import { HStack, Skeleton, SkeletonCircle, Stack } from "@chakra-ui/react"
const Demo = () => {
return (
<HStack gap="5">
<SkeletonCircle size="12" />
<Stack flex="1">
<Skeleton height="5" />
<Skeleton height="5" width="80%" />
</Stack>
</HStack>
)
}
用法
import { Skeleton, SkeletonCircle, SkeletonText } from "@chakra-ui/react"
<Stack gap="6" maxW="xs">
<HStack width="full">
<SkeletonCircle size="10" />
<SkeletonText noOfLines={2} />
</HStack>
<Skeleton height="200px" />
</Stack>
示例
动态
使用 Skeleton
组件创建动态骨架屏。
import {
HStack,
Skeleton,
SkeletonCircle,
SkeletonText,
Stack,
} from "@chakra-ui/react"
const Demo = () => {
return (
<Stack gap="6" maxW="xs">
<HStack width="full">
<SkeletonCircle size="10" />
<SkeletonText noOfLines={2} />
</HStack>
<Skeleton height="200px" />
</Stack>
)
}
文本
使用 SkeletonText
组件为文本创建骨架屏。
import { SkeletonText } from "@chakra-ui/react"
const Demo = () => {
return <SkeletonText noOfLines={3} gap="4" />
}
带子元素
在内容加载时,使用 loading
属性来显示骨架屏。
选择
选择
import { Badge, HStack, Skeleton } from "@chakra-ui/react"
const Demo = () => {
return (
<HStack gap="4">
<Skeleton asChild loading={true}>
<Badge>Select</Badge>
</Skeleton>
<Skeleton loading={false}>
<Badge>Select</Badge>
</Skeleton>
</HStack>
)
}
变体
使用 variant
属性更改骨架屏的视觉样式。
脉冲
光泽
import { HStack, Skeleton, Stack, Text } from "@chakra-ui/react"
const Demo = () => {
return (
<Stack gap="5">
<HStack gap="5">
<Text width="8ch">pulse</Text>
<Skeleton flex="1" height="5" variant="pulse" />
</HStack>
<HStack gap="5">
<Text width="8ch">shine</Text>
<Skeleton flex="1" height="5" variant="shine" />
</HStack>
</Stack>
)
}
内容加载
当 loading
变为 false
时,骨架屏组件将淡入。
Chakra UI 真酷
"use client"
import { Button, Skeleton, Stack, Text } from "@chakra-ui/react"
import { useState } from "react"
const Demo = () => {
const [loading, setLoading] = useState(true)
return (
<Stack align="flex-start" gap="4">
<Skeleton height="6" loading={loading}>
<Text>Chakra UI is cool</Text>
</Skeleton>
<Button size="sm" onClick={() => setLoading((c) => !c)}>
Toggle
</Button>
</Stack>
)
}
起始和结束颜色
使用 --start-color
和 --end-color
CSS 变量来更改骨架屏的起始和结束颜色。
import { Skeleton } from "@chakra-ui/react"
const Demo = () => {
return (
<Skeleton
variant="shine"
width="full"
height="5"
css={{
"--start-color": "colors.pink.500",
"--end-color": "colors.orange.500",
}}
/>
)
}
属性
属性 | 默认值 | 类型 |
---|---|---|
colorPalette | 'gray' | 'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink' 组件的调色板 |
loading | true | 'true' | 'false' 组件的加载状态 |
variant | 'pulse' | 'pulse' | 'shine' | 'none' 组件的变体 |