Skip to content

SwitchButton 切换按钮

基础用法

  • 可切换选中状态的按钮,内部基于 sn-button 扩展,v-model 绑定布尔值,点击在选中与未选中之间切换
  • 选中态与未选中态各自拥有独立的配色体系,两态配色沿用 sn-checkbox-tag 的 type / level 等级机制:选中态由 active-type / active-level 控制,未选中态由 type / level 控制
  • 提供两种定制颜色的方式:① 用等级机制组合出主题色;② 用 bg-color / active-bg-colortext-color / active-text-color 直接指定两态的背景色、文字色与边框色,自定义颜色优先于等级配色
  • 支持两态不同文案(text / active-text)与图标、加载与禁用状态,以及 text-styleicon-style 等外部样式扩展

文本传参

文本请统一通过 text / active-text 传入(组件不透传插槽)。子组件 sn-button$slots.default != null 判定插槽,若向上层透传空插槽会导致文本属性被忽略、按钮显示为空。

vue
<template>
	<sn-switch-button v-model="value" text="关注" active-text="已关注" active-type="success"
		active-level="second"></sn-switch-button>
</template>

<script lang="uts" setup>
const value = ref<boolean>(false)
</script>

更多演示请下载 demo 查看

两态配色(type / level)

未选中态与选中态分别由 type + levelactive-type + active-level 决定,四级 level 的表现程度与 sn-button 一致:

level背景色文字色
first功能色原色功能色背景上的文字色
second功能色浅色(Light)功能色原色
thirdinfo 信息色功能色原色
least透明功能色原色
vue
<template>
	<sn-switch-button v-model="value" type="info" level="second" active-type="primary" active-level="first"></sn-switch-button>
	<sn-switch-button v-model="value2" type="primary" level="least" active-type="primary" active-level="first"></sn-switch-button>
</template>

<script lang="uts" setup>
const value = ref<boolean>(false)
const value2 = ref<boolean>(true)
</script>

自定义两态颜色

直接传入颜色属性即可覆盖等级配色,两态的颜色互不影响,可只覆盖其中一态。颜色值支持 $ 简写(如 $primary$textLight),也可传入 #rrggbbrgb()rgba() 等常规颜色值:

vue
<template>
	<sn-switch-button v-model="value" text="关注" active-text="已关注" bg-color="rgba(124,92,255,0.15)"
		text-color="#7c5cff" active-bg-color="#7c5cff" active-text-color="#ffffff"></sn-switch-button>
</template>

<script lang="uts" setup>
const value = ref<boolean>(false)
</script>

属性

参数说明类型默认值可选值
v-model绑定值,当前是否选中Booleanfalsetrue | false
type未选中态功能色类型Stringinfoprimary | info | success | error | warning
level未选中态等级,决定表现程度(first 最重、least 最轻)Stringsecondfirst | second | third | least
activeType选中态功能色类型Stringprimaryprimary | info | success | error | warning
activeLevel选中态等级Stringfirstfirst | second | third | least
text未选中态文本内容String''-
activeText选中态文本内容,为空时沿用 textString''-
bgColor未选中态背景颜色,传入后覆盖等级配色String''-
activeBgColor选中态背景颜色,传入后覆盖等级配色String''-
textColor未选中态文字与图标颜色String''-
activeTextColor选中态文字与图标颜色String''-
borderColor未选中态边框颜色,为空时取该态功能色原色String''-
activeBorderColor选中态边框颜色,为空时取该态功能色原色String''-
size按钮尺寸,影响内边距、字号与圆角Stringnormalsmall | normal | large
shape按钮形状,circle 时为纯图标圆形按钮Stringrectrect | circle
icon图标名称(sn-icon 图标名)String''-
iconPosition图标位置Stringleftleft | right
iconSize图标大小String | Number''-
radius自定义按钮圆角String | Number''-
plain是否镂空(透明背景 + 边框样式)Booleanfalsetrue | false
dashed是否虚线边框(一般配合 plain 使用)Booleanfalsetrue | false
disabled是否禁用,禁用后不可切换Booleanfalsetrue | false
loading是否加载状态,显示加载遮罩并阻止切换Booleanfalsetrue | false
loadingStyle加载指示器自定义样式UTSJSONObject | String''-
hoverStyle按下时的点击态样式UTSJSONObject | String''-
hoverStopPropagation是否阻止点击态的父节点传播Booleanfalsetrue | false
hoverStartTime按下后点击态出现的延迟时间(ms)Number0-
hoverStayTime松手后点击态保留的时间(ms)Number0-
hoverTransTime点击态过渡动画时长,支持 $ 前缀String | Number''-
textClass文本外部样式类String''-
textStyle文本自定义样式UTSJSONObject | String''-
iconClass图标外部样式类String''-
iconStyle图标自定义样式UTSJSONObject | String''-
customStyle自定义根节点(按钮本体)样式UTSJSONObject | String''-
customClass根节点外部样式类String''-

事件

名称类型说明
click() => Void点击按钮时触发(禁用或加载状态下不触发)
change(value: boolean) => Void选中状态改变时触发,携带切换后的新值

使用 MIT 协议