Skip to content
在新窗口打开实时预览

Button 按钮 ​

基于 uni-app 原生 button 封装,覆盖常用属性、状态与交互。

使用建议 ​

用 Button 触发即时操作,例如提交表单、确认选择或调用平台开放能力。一个操作区只保留一个主要按钮;页面跳转优先使用 Link 或明确的导航组件。

平台兼容性 ​

H5App微信小程序支付宝小程序
√√√√

开放能力属性仅在对应平台生效。

基础用法 ​

vue
<snake-button>默认按钮</snake-button>
<snake-button type="primary">主要按钮</snake-button>
<snake-button type="success" plain>镂空按钮</snake-button>
<snake-button size="small" shape="circle">小型胶囊按钮</snake-button>
<snake-button icon="search">图标按钮</snake-button>
<snake-button type="primary" block>块级按钮</snake-button>
<snake-button loading>加载中</snake-button>
<snake-button disabled>不可操作</snake-button>

图标、块级与加载 ​

icon 传入 snake-icon 图标名,颜色与字号跟随按钮文字;block 让按钮占满整行;loading 内置品牌加载图标,颜色同样跟随按钮文字,期间不触发点击。

vue
<snake-button type="primary" icon="right">下一步</snake-button>
<snake-button type="primary" block :loading="submitting" @click="submit">保存</snake-button>

主题、尺寸和形状 ​

type 支持 default、primary、success、info、warning、error。

size 支持 large、default、medium、small、mini;shape 支持 square 和 circle。

vue
<snake-button type="primary">主要按钮</snake-button>
<snake-button type="warning" plain>警告按钮</snake-button>
<snake-button size="medium">中号按钮</snake-button>
<snake-button shape="circle">胶囊按钮</snake-button>

水波纹与节流 ​

vue
<snake-button ripple>水波纹按钮</snake-button>
<snake-button ripple ripple-bg-color="rgba(255, 255, 255, .42)">自定义水波纹</snake-button>
<snake-button :throttle-time="500" @click="submit">提交订单</snake-button>

开启 ripple 后不再叠加原生 hover-class。disabled 或 loading 时不会触发业务点击。

异步提交 ​

throttle-time 只限制连续点击;需要覆盖整个请求周期时,将 loading 绑定到提交状态。

vue
<snake-button type="primary" :loading="submitting" :disabled="submitting" @click="submit">保存</snake-button>
ts
async function submit() {
    if (submitting.value) return;
    submitting.value = true;
    try {
        await saveData();
    } finally {
        submitting.value = false;
    }
}

原生开放能力 ​

vue
<snake-button open-type="getPhoneNumber" @getphonenumber="receivePhone">获取手机号</snake-button>
<snake-button form-type="submit">提交表单</snake-button>

无障碍 ​

  • 按钮文字应描述结果,例如“保存地址”,不要只写“确定”。
  • 仅显示图标时,通过可见文字或平台支持的无障碍属性提供名称。
  • 异步操作期间使用 loading 表达进度;除非确实不能再次提交,否则不要用永久禁用代替状态反馈。

API ​

Props ​

参数说明类型默认值
text无默认插槽时显示的文本string''
icon内置图标名,颜色与字号跟随按钮文字string''
type主题类型stringdefault
size按钮尺寸stringdefault
shape按钮形状square | circlesquare
block是否为块级按钮,占满整行booleanfalse
plain是否镂空booleanfalse
hairLine是否使用细边框booleantrue
disabled是否禁用booleanfalse
loading是否显示加载状态,内置图标随文字着色booleanfalse
ripple是否开启水波纹booleanfalse
rippleBgColor水波纹颜色string''
hoverClass自定义按下类名string''
throttleTime点击节流时间,单位 msnumber | string0
customClass根节点自定义类名string''
customStyle根节点自定义样式string | object{}

其余原生能力参数包括 scope、openType、formType、appParameter、hoverStopPropagation、lang、sessionFrom、sendMessageTitle、sendMessagePath、sendMessageImg、showMessageCard、dataName、hoverStartTime 和 hoverStayTime。

Events ​

支持 click、getuserinfo、contact、getphonenumber、error、launchapp、opensetting、chooseavatar 和 agreeprivacyauthorization。

Slots ​

名称说明
default按钮内容;未提供时显示 text 属性

主题变量 ​

Button 复用 Snake UI 全局颜色令牌,可在主题作用域内覆盖:

变量用途
--snake-color-primary主要按钮颜色
--snake-color-success成功按钮颜色
--snake-color-info信息按钮颜色
--snake-color-warning警告按钮颜色
--snake-color-error错误按钮颜色
--snake-color-white实心按钮文字颜色
--snake-color-text默认按钮文字颜色
--snake-color-border-light默认按钮边框颜色
--snake-color-surface默认按钮背景颜色

各主题色还配有 -dark、-disabled 和 -light 状态令牌,完整定义见 src/uni_modules/snake-ui/theme.scss。

为 uni-app 商城与 CMS 场景设计