Skeleton 使用手册
v1.4.0 · @snowui-design-system/components
许可阅读:首次阅读组件文档、源码或 npm 使用流程,先读完整 LICENSE;同任务同版本去重。公开 API 配置与内部实现修改分别按许可处理;全部组件使用统一运行包,源码权益以许可为准。
组件介绍
在内容加载时展示占位轮廓,帮助用户预先理解页面结构,并保持加载过程中的布局连续。
使用选择
用于内容加载占位。已有组件支持 loading / skeleton 时先声明状态,让组件提供正确形状,不在页面重画它的骨架。
loading=false 渲染真实 children;加载时按 variant / width / height 或 renderHints 显示占位。
优先让已有组件通过 loading 提供形状;独立骨架的尺寸和圆角仍使用设计系统 Token。
快速开始
以下示例展示推荐的基本组合。更多场景与组合限制见后文。
API
未重新声明的继承能力请查所属基础组件文档;本表只列本组件源码具名公开属性。
使用边界与详细说明
布局模型
主布局模型:内禀原子布局。
Skeleton 作为占位原语时,尺寸优先由组件自注册的
renderHints决定;显式variant / width / height可覆盖 hints,旧componentClass映射只作兼容。作为外部布局子项时表现为 Hug 或按调用方传入的固定尺寸渲染。多条 text skeleton、avatar-group skeleton overlap 等只是 Skeleton 私有渲染布局,用于模拟目标组件占位,不向外提供通用区域协议。
Skeleton 不输出
data-auto-layout;Frame 的 loading 协议负责决定是否渲染 Skeleton,Skeleton 本身不接管宿主布局。
适用范围
直接在 test / demo 中显式渲染骨架,用于观察默认样式。
被
Frame在loading + skeleton协议中内部调用,作为默认占位渲染器。配合组件侧的
renderHints接收最终的骨架尺寸与行数提示。
2.2 renderHints 规则
未传 radius 时,非圆形 Skeleton 使用 var(--radius-3, 0.75rem);circle 始终使用 50%。旧 Icon class 映射仍保留 rect + 50% 的兼容外观。
解析顺序
Skeleton 的布局解析顺序固定如下:
存在
renderHints时视为组件已自注册,直接以 hints 创建布局;显式variant / width / height逐字段优先。没有 hints 但传了显式
variant / width / height时,按显式单项骨架渲染。仅旧调用方没有 hints / 显式几何时,才根据
componentClass读取历史默认布局。完全未命中时回退为通用
rect骨架。
4.1 通用样式
4.2 布局容器样式
补充规则:
.snowui-skeleton-layout-single会切回display: block。.snowui-skeleton-layout-text会改为纵向布局:width: 100%; flex-direction: column; align-items: stretch;.snowui-skeleton-layout-avatar-group保持gap: 0。
4.3 形状默认值
补充规则:
line和rect默认圆角统一为12px。circle永远保持border-radius: 50%。line / circle / rect都有max-width: 100%; max-height: 100%;兜底。
文本骨架规则
任何已注册组件都可以用 renderHints.rows 展开成多条文字骨架;Text 会根据内容自动计算行数。
6.1 行数来源
Text自身在骨架态下会统计第一层块级文本段落节点数量。当前统计的标签集合是:
divpliblockquoteh1-h6
第一层存在纯文本内容时,会额外记作
1条。最终最少渲染
1条。
6.2 多条文字骨架布局
第一层渲染规则
Skeleton 本身不负责递归拆解整棵组件树,当前规则固定为“只看第一层”。
当组件自身进入
loading + skeleton时,优先渲染当前组件自己的 Skeleton。不继续展开组件内部的
Icon / Text / Avatar等子组件。当
Frame进入loading + skeleton时:若第一层存在已自注册的直接子组件,则只渲染这些第一层组件对应的 Skeleton。
若第一层不存在组件,则
Frame自身回退为文字形态 Skeleton。
尺寸规则
数字型
width / height会统一转成rem。Skeleton优先使用组件通过renderHints.width / height / radius / rows提供的最终几何。这意味着圆角矩形 Skeleton 在组件已经提供尺寸提示时,会跟随组件的最终宽高,而不是回退成通用短宽。
当前没有启用“读取真实 DOM 实测尺寸”的通用机制。
使用示例
Skeleton 样式覆盖
先阅读 完整 LICENSE;同任务、同版本、同范围去重。
优先用组件公开 Props 匹配合适样式,尽可能保留原有视觉。确需改写时按 样式选择与改写顺序 使用自己的 class(含项目已有 Tailwind)或实例 style。以下名称来自源码实际消费的公开 override;先核对目标作用域,不修改私有 DOM。采用 SnowUI Token 时选择正确类别,外部应用不被要求安装一方 utilities。
Skeleton 类型与状态
必填属性:无具名必填属性。
可双向绑定:本组件未声明具名双向绑定属性;状态更新通过公开回调或所属宿主处理。
继承声明:无接口继承。继承能力以基类公开文档为准;Omit 中的字段已排除,不能按基类原样使用。
以下为公开属性实际引用的类型声明,来自源码;Svelte Snippet 表示内容片段,ComponentProps 表示对应组件的 Props。
SkeletonVariant
来源:components/src/components/Skeleton.svelte
RenderHints
来源:components/src/logic/frame-types.ts
SkeletonRenderVariant
来源:components/src/logic/frame-types.ts
ResponsiveConfig
来源:components/src/logic/responsive.svelte.ts
Breakpoint
来源:components/src/logic/responsive.svelte.ts
ResponsiveRule
来源:components/src/logic/responsive.svelte.ts