Skeleton 骨架屏

在需要等待加载内容的位置,提供一个可视化的占位符,可以提升用户体验。

基础用法

基础的骨架效果。


可配置的行数

您可以自行配置骨架屏的行数,以便更精准地适配您的场景。需要注意的是,实际渲染的行数会比您配置的 `rows` 值多 1,因为我们多渲染了宽度为 33% 的一个标题行。

动画效果

我们提供了一个开关 `animated`,用于控制是否显示加载动画。当这个值为 `true` 时,`el-skeleton` 的所有子项都会显示动画。

自定义模板

Element Plus 只提供了最常用的模板,有时候这可能无法满足您的需求,因此您可以使用名为 `template` 的插槽来自定义模板。

同时,我们也提供了不同类型的骨架单元供您选择,更详细的信息请滚动到本页底部查看 API 描述。此外,在构建您自己的自定义骨架结构时,您应该使其结构尽可能接近真实 DOM,这样可以避免因高度差异引起的 DOM 抖动。

加载状态

当 `Loading` 结束时,我们总是需要向最终用户展示带有数据的真实 UI。通过 `loading` 属性,我们可以控制是否显示 DOM。您也可以使用 `default` 插槽来构建真实的 DOM 元素。

渲染列表数据

大多数情况下,骨架屏被用作渲染尚未从服务器获取的列表数据的指示器,这时我们需要凭空创建一列骨架屏,使其看起来像正在加载。通过 `count` 属性,您可以控制需要渲染到浏览器的模板数量。

提示

我们不建议向浏览器渲染大量的伪 UI,这仍然会导致性能问题,并且销毁骨架屏也需要更长的时间。为了更好的用户体验,请将 `count` 保持在尽可能小的范围内。

避免渲染抖动

有时 API 响应非常快,当这种情况发生时,骨架屏刚渲染到 DOM 就需要切换回真实的 DOM,这会导致突然的闪烁。为了避免这种情况,您可以使用 `throttle` 属性。

提示

自从 2.8.8 版本起,`throttle` 属性支持两个值:`number` 和 `object`。当传递一个 `number` 时,它等同于 `{leading: xxx}`,用于控制骨架屏显示的节流。当然,您也可以通过传递 `{trailing: xxx}` 来控制骨架屏消失的节流。

美味的汉堡包
2025年8月24日星期日

初始渲染加载 2.8.8

当 loading 的初始值为 true 时,您可以设置 `throttle: {initVal: true, leading: xxx}` 来控制初始骨架屏立即显示而无需节流。

切换显示/隐藏时避免渲染抖动 2.8.8

提示

您可以设置 `throttle: {initVal: true, leading: xxx, trailing: xxx}` 来控制骨架屏效果的初始显示,并在切换加载状态时使骨架屏的过渡更加平滑。

有时您希望在加载状态切换显示或隐藏时,业务组件的渲染更加平滑。您可以使用 `throttle: {leading: xxx, trailing:xxx}` 来控制渲染抖动。

Skeleton API

Skeleton 属性

名称描述类型默认值
animated是否显示动画booleanfalse
count要渲染的伪 UI 条目数量number1
加载中是否显示真实 DOMbooleanfalse
行数行数,仅在没有提供 template 插槽时有效number3
throttle渲染延迟的毫秒数。数字表示延迟显示,也可以设置为延迟隐藏,例如 `{ leading: 500, trailing: 500 }`。当需要控制 loading 的初始值时,可以设置 `{ initVal: true }`number / object0

Skeleton 插槽

名称描述作用域
default真实渲染的 DOMobject
template用作渲染骨架屏模板的内容object

SkeletonItem API

SkeletonItem 属性

名称描述类型默认值
variant当前渲染的骨架屏类型枚举文本

来源

组件样式文档

贡献者