骨架屏

在加载数据时,如果需要为终端用户提供丰富的视觉和交互体验,可以选择 skeleton 骨架屏。

基础用法

基础骨架屏。


可配置的行数

您可以自行配置行数,为了获得更精确的渲染效果,实际渲染的行数将始终比给定数字多 1 行,这是因为我们正在渲染一个宽度为其他行 33% 的标题行。

动画效果

我们提供了一个名为 animated 的开关标志,用于指示是否显示加载动画。当此项为 true 时,el-skeleton 的所有子级都将显示动画效果。

自定义模板

Element Plus 仅提供最常用的模板,有时这可能会成为一个问题,因此您可以使用名为 template 的插槽来完成该工作。

此外,我们还提供了不同类型的骨架单元供您选择,更多详细信息请滚动到页面底部查看 API 说明。另外,在构建您自己的自定义骨架结构时,应使其结构尽可能接近真实的 DOM,从而避免由高度差引起的 DOM 抖动。

加载状态

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

渲染数据列表

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

提示

我们不建议在浏览器中渲染大量虚假 UI,这仍然会导致性能问题,且销毁骨架屏所需的时间也会更长。尽量保持 count 较小,以提供更好的用户体验。

防止渲染抖动

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

提示

2.8.8 版本起,throttle 属性支持两种值:numberobject。传递 number 时,相当于 {leading: xxx},控制骨架屏显示的节流。当然,您也可以通过传递 {trailing: xxx} 来控制骨架屏消失的节流。

好吃的汉堡
2026年5月8日 星期五

初始渲染加载 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} 来控制渲染抖动。

骨架屏 API

骨架屏属性

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

骨架屏插槽

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

骨架屏单元 API

骨架屏单元属性

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

来源

组件样式文档

贡献者