Button

触发即时操作的按钮,最基础的交互原子(严格对齐 Semi Button)。

设计文档

如何引入

import { Button, ButtonGroup, SplitButtonGroup } from '@chenzy-design/svelte';

按钮类型

支持 primary / secondary / tertiary / warning / danger 五种语义类型。

关于类型字体色值

每种 type 的语义色都是 CSS 变量,可直接用于自定义元素:--cd-color-primary(主要)、--cd-color-secondary(次要)、--cd-color-tertiary(第三)、--cd-color-warning(警告)、--cd-color-danger(危险)。

主要次要第三警告危险

按钮主题

目前可用的主题(theme)为:light(浅色背景)、solid(深色背景)、borderless(无背景)、outline(边框模式),与类型正交组合。默认主题为 light。

浅色背景

theme="light":浅色语义底 + 语义文字,适合次级/常规操作。

深色背景

theme="solid":语义实心底 + 反相文字,视觉最强,适合主操作。

无背景

theme="borderless":透明底 + 语义文字,无边框,最轻量。

边框模式

theme="outline":透明底 + 语义边框 + 语义文字,介于 light 与 borderless 之间。

尺寸

提供 large / default / small 三种尺寸。

块级按钮

block 让按钮撑满容器宽度,常用于表单/移动端主操作。

图标按钮

可定义按钮的图标:通过 icon snippet 传入,iconPosition 控制左右;纯图标按钮(无文字)自动收成方形,需提供 ariaLabel。

默认状态:
禁用状态:
复合类型:
更改主题:
更改图标位置:

链接按钮

链接型文字按钮推荐用 Typography 的 link prop 实现(而非 Button),支持 href / target / underline,具体用法详见 Typography

禁用状态

disabled 在各主题下用禁用底灰 + 灰字表现,并禁止交互;disabled 优先级高于 loading(对齐 Semi)。

加载状态

设置 loading 为 true 即进入加载态,自动带旋转图标并禁止点击;可受控切换,注意 loading 时按钮不可点击。

AI 风格 - 多彩按钮

colorful 在所有主题下用品牌蓝→紫渐变,营造 AI 风格;type 仅 primary/tertiary。

组合尺寸

ButtonGroup 横向拼接多个 Button;组级 size 经 context 透传,组内按钮统一尺寸。

组合禁用

组级 disabled 透传,整组按钮一并禁用。

组合类型

组级 type 经 context 透传统一语义类型,组内单个按钮仍可单独覆盖。

分裂按钮组合

SplitButtonGroup 是纯容器(对齐 Semi):内部放 Button + Dropdown(含箭头 Button),为首/末按钮补圆角并添加按钮间隔。

最近触发:(无)

API 参考

Button

Props

属性说明类型默认值
type语义类型'primary'|'secondary'|'tertiary'|'warning'|'danger'primary
theme视觉变体:有背景/无背景/浅背景/边框'solid'|'borderless'|'light'|'outline'light
size尺寸'small'|'default'|'large'default
block撑满容器宽度booleanfalse
disabled禁用状态(底灰 + 灰字,优先级高于 loading)booleanfalse
loading加载态(带旋转图标,禁用点击)booleanfalse
colorfulAI 多彩按钮:type 仅 primary/tertiary 有意义(对齐 Semi)booleanfalse
circle圆形按钮(border-radius:50%),配合 icon-only 呈正圆booleanfalse
htmlType原生 button 的 type 值'button'|'submit'|'reset'button
icon图标插槽;纯图标按钮需提供 ariaLabelSnippetundefined
iconPosition图标相对文字位置'left'|'right'left
noHorizontalPadding仅设置 icon 时去单/双侧水平内距(inline padding)boolean|'left'|'right'|('left'|'right')[]false
ariaLabel无障碍名(透传 aria-label);纯图标按钮必填stringundefined
class根元素自定义类名stringundefined
style根元素自定义内联样式stringundefined
contentClassName内容区(.cd-button-content)自定义类名stringundefined
...rest其余原生属性透传到根 button:data-*/name/value/form/title/tabindex/aria-controls/aria-expanded 等HTMLButtonAttributes-

Events

事件载荷说明
onclickMouseEventdisabled/loading 时不触发(原生 disabled 阻断)
onmousedownMouseEvent鼠标按下
onmouseenterMouseEvent鼠标移入
onmouseleaveMouseEvent鼠标移出

Slots

名称说明
children按钮文本
icon图标

ButtonGroup

横向拼接多个 Button;组级 size/type/theme/disabled/colorful 经 context 透传,组内 Button 显式 prop 始终优先。相邻按钮间以 1px 分隔条区隔(outline 主题走 border 叠边)。

Props

属性说明类型默认值
type组级语义类型'primary'|'secondary'|'tertiary'|'warning'|'danger'undefined
theme组级视觉变体'solid'|'borderless'|'light'|'outline'undefined
size组级尺寸'small'|'default'|'large'undefined
disabled组级禁用,整组一并禁用booleanundefined
colorful组级多彩,透传给组内 Buttonbooleanundefined
ariaLabel按钮组语义标签(aria-label)stringundefined
class根元素自定义类名stringundefined
style根元素自定义内联样式stringundefined

SplitButtonGroup

分裂按钮:纯 role=group 容器,为内部首/末 button 加圆角并添加按钮间隔。典型用法为左侧主 Button + 右侧 Dropdown 触发的箭头 Button。

Props

属性说明类型默认值
ariaLabel分裂按钮组语义标签(root aria-label)stringundefined
class根元素自定义类名stringundefined
style根元素自定义内联样式stringundefined
children分裂按钮内容(Button + Dropdown 等)Snippetundefined

Accessibility

ARIA rolebutton
键盘交互EnterSpace

设计变量

变量默认值用法
--cd-animation-duration-button-icon-custom-loading 1600ms自定义指示器旋转一周时长(对齐 Semi 1600ms)
--cd-animation-duration-button-icon-loading 600ms加载图标容器旋转一周时长(对齐 Semi 600ms)
--cd-transition-delay-button-borderless-bg var(--cd-motion-delay-none)无边框按钮-背景色-延迟时间
--cd-transition-delay-button-danger-bg var(--cd-motion-delay-none)危险按钮-背景色-延迟时间
--cd-transition-delay-button-danger-border var(--cd-motion-delay-none)危险按钮-边框-延迟时间
--cd-transition-delay-button-light-bg var(--cd-motion-delay-none)浅色按钮-背景色-延迟时间
--cd-transition-delay-button-light-border var(--cd-motion-delay-none)浅色按钮-边框-延迟时间
--cd-transition-delay-button-primary-bg var(--cd-motion-delay-none)主要按钮-背景色-延迟时间
--cd-transition-delay-button-primary-border var(--cd-motion-delay-none)主要按钮-边框-延迟时间
--cd-transition-delay-button-secondary-bg var(--cd-motion-delay-none)次要按钮-背景色-延迟时间