Text 使用手册
v3.5.4 · @snowui-design-system/components
许可阅读:首次阅读组件文档、源码或 npm 使用流程,先读完整 LICENSE;同任务同版本去重。公开 API 配置与内部实现修改分别按许可处理;全部组件使用统一运行包,源码权益以许可为准。
组件介绍
统一展示文本,支持排版与截断,适合正文、标签和受限空间中的信息表达。
使用选择
用于文本语义、截断、展开和提示。默认不启用 hover 动效;静态普通文字可使用语义 HTML,动态数值或文字过渡按动效组件选择。
tag 指定文本语义,lines 控制截断,more / tooltip 提供展开与补充提示。
默认不启动 hover 交互;stateText 可按状态替换文字,parts 配置默认 Button / Tooltip。
lines=1 缩短可见文字时仍保留完整可访问名称;用于按钮、链接或原生标签时不丢失名称尾部。
快速开始
以下示例展示推荐的基本组合。更多场景与组合限制见后文。
API
未重新声明的继承能力请查所属基础组件文档;本表只列本组件源码具名公开属性。
使用边界与详细说明
内置组件双模式
parts.Button:配置lines=0 + more生成的内置展开按钮。parts.Tooltip:配置截断时内置 Tooltip。外置 Tooltip 或其他 children 不受 Text 私有 DOM 选择器控制。
继承: 复用 Frame.svelte 的所有通用能力 (交互、动效、响应式、形态等)。 默认能力开关: enableResponsive=false, enableContext=true, enableScaleObserver=false。 核心机制: 采用 组件内聚模式 (Component-owned Truncation),Text 自身直接处理 lines/onTruncate,Frame 仅负责通用能力路由。
未声明 lines 时,截断控制器保持休眠,不读取文本、不排队 rAF,也不登记 MutationObserver / ResizeObserver;动态设置 lines 后再按既有协议激活,不改变默认文本视觉。
布局模型
主布局模型:文本流布局。
Text 的主职责是保留 HTML 文本流、语义 tag、截断和 tooltip/more 角色定位,不参与槽位宿主、内联外壳或复合管理布局注册。
tag决定block / inline-block / list-item / code等文本流显示模式;lines=0/1/2/3只改变截断和遮罩,不改变组件的主布局模型。<Tooltip as="tooltip">与<Button as="more">是 Text 内的角色子项:Tooltip 负责截断提示,Button 仍按 Button 的内联外壳布局渲染。Text 不使用 padding/gap 管理内部排列,也不通过 margin 改变外部文本流间距;交互位移只能走 transform 变量。
1.1 功能概览
智能截断:
Text直接支持lines={0|1|2|3}和onTruncate;单行模式复用fitTextToElement(),稳定显示紧跟文字的显式省略符。全文可访问: 单行截断时,可见短文本只负责视觉;复用现有fullText与包内无障碍隐藏样式提供完整纯文本,避免父Button、链接或原生标签的名称只剩截断前缀。不重复渲染交互Snippet,也不新增测量器。
内置展开:
lines=0时可通过more开启内置 ArrowLineDown Button,默认关闭;内置按钮默认开启与 BarChart 模糊浮层一致的背景模糊。滚动模式:
lines=0未显示 more 按钮时,内容使用 Textarea 同源的上下渐隐与浮层滚动条;显示 more 时改为展开模式且不渲染滚动条。角色化组合:
<Tooltip as="tooltip">: 截断时自动显示的提示。<Button as="more">: "展开/收起" 按钮。
响应式:
tag/class可通过responsive进行断点覆写。动效: 继承 Frame 的所有动效触发器 (
whileHover,whileClick等)。
1.2 关键字定义 (Keywords)
stateText 解析规则
Text读取最近父级 Frame Context 的currentState。当前状态命中
stateText[currentState]时渲染该文本。未命中当前状态时回退
stateText.Idle。未传
stateText或仍未解析出文本时继续渲染 children。stateText只用于同结构文本替换,不承载复杂 DOM。复杂自定义子树仍属于stateContent的例外场景。
Load是 Frame loading / skeleton 协议状态名。若只是按钮任务处理中并需要展示真实文案,优先使用Pending。
1.3 使用示例
1. 基础样式
2. 布局模式 (Layout Modes)
3. Hover 交互
默认关闭;仅在 interactive === true 时生效:
5. 截断与可展开样式 (lines=0/2/3)
Text 样式覆盖
先阅读 完整 LICENSE;同任务、同版本、同范围去重。
优先用组件公开 Props 匹配合适样式,尽可能保留原有视觉。确需改写时按 样式选择与改写顺序 使用自己的 class(含项目已有 Tailwind)或实例 style。以下名称来自源码实际消费的公开 override;先核对目标作用域,不修改私有 DOM。采用 SnowUI Token 时选择正确类别,外部应用不被要求安装一方 utilities。
Text 类型与状态
必填属性:无具名必填属性。
可双向绑定:bind:element。
继承声明:FrameProps。继承能力以基类公开文档为准;Omit 中的字段已排除,不能按基类原样使用。
以下为公开属性实际引用的类型声明,来自源码;Svelte Snippet 表示内容片段,ComponentProps 表示对应组件的 Props。
StateValueMap
来源:components/src/logic/frame-types.ts
CoreState
来源:components/src/logic/frame-types.ts
TooltipProp
来源:components/src/components/Text.svelte
ComponentPartsOf
来源:components/src/logic/component-parts.svelte.ts
ConfigurableComponentPartProps
来源:components/src/logic/component-parts.svelte.ts
ComponentPartControlledKey
来源:components/src/logic/component-parts.svelte.ts