For AI agents: the complete documentation index is available at https://a3s-lab.github.io/UI/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/UI/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/UI/components/button.md.

按钮

按钮触发当前界面中的操作;需要前往其他地址时,应使用带 href 的链接并应用相同视觉样式。

保存权限更改
工作区访问权限2 项待保存更改

审阅者访问权限和部署审批设置已经准备好更新。

可以保存更改。

用法

导入 Tailwind 与完整 A3S 样式包:

@import "tailwindcss";
@import "@a3s-lab/ui/a3s.css";

然后在原生按钮上添加 btn 类。务必显式设置 type="button",避免按钮在表单中意外提交。

<button type="button" class="btn">保存更改</button>

需要按组件加载时,依次导入基础样式、按钮结构和 A3S 视觉样式。CDN 与其他接入方式见安装。

@import "@a3s-lab/ui/base.css";
@import "@a3s-lab/ui/components/button.css";
@import "@a3s-lab/ui/styles/a3s.css";

参数

参数值用途
根元素<button> 或 <a>操作使用按钮,页面跳转使用链接
classbtn必填的组件根类名
data-variantprimary、secondary、outline、ghost、link、destructive控制操作层级;省略时为主按钮
data-sizexs、sm、default、lg、icon-xs、icon-sm、icon、icon-lg控制点击目标与视觉密度
data-iconinline-start 或 inline-end放在文字按钮的内联图标上,校正间距
原生状态disabled、aria-busy、aria-pressed表达不可用、处理中与切换状态

按钮没有 JavaScript 控制器或专用框架 Hook。HTML、React 和 Vue 使用相同的原生激活与状态属性;异步操作和防重复提交由应用状态负责。

状态与变体

同一区域通常只保留一个主按钮。secondary 与 outline 用于次级操作,ghost 用于低强调工具操作,destructive 只用于有明确破坏后果的动作。link 只是按钮的视觉变体,真正的页面导航仍应使用 <a href>。

操作层级

disabled 阻止交互。异步操作应同时提供可见进度文本和 aria-busy="true";可切换按钮由业务状态更新 aria-pressed,组件不会替应用维护状态。

处理中与不可用

尺寸

尺寸应由界面密度决定,不用于表达操作重要性。常规页面使用默认尺寸;紧凑工具栏可使用 sm,大尺寸适合低密度或触控优先界面。仅图标按钮使用对应的 icon-* 尺寸。

尺寸与点击目标

图标与链接

文字按钮中的图标使用 data-icon 表明位置。仅图标按钮必须通过 aria-label 提供名称。链接按钮保留原生链接语义和浏览器行为。

图标与导航

查看按钮组

可访问性

  • 操作使用 <button>,导航使用带 href 的 <a>;不要用点击事件伪装链接。
  • 仅图标按钮必须有可访问名称,通常使用 aria-label。
  • 加载状态保留具体的动作文字,同步 disabled 与 aria-busy="true",并在等待业务操作前立即设置防重复提交保护。
  • 切换按钮由应用维护 aria-pressed="true|false";展开浮层的按钮使用 aria-expanded 与 aria-controls。
  • 破坏性按钮只表达操作性质。需要二次确认时,使用警报对话框。
  • A3S 样式包使用单一外移焦点轮廓,不会叠加 box-shadow 光环;不要在应用样式中移除它。