更新记录

2.0.2(2026-05-22) 下载此版本

增加loading状态,多文字适配

2.0.1(2023-09-18) 下载此版本

兼容vue2,vue3,新增月亮模式使用案例,或者懒人一键月亮模式

2.0.0(2022-05-12) 下载此版本

重构,已使用的请及时更新,传参字段也需更改

查看更多

平台兼容性

uni-app(5.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟

uni-app x(5.0)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

zero-switch

一. 插件说明

个人仅测试与vue2,vue3,微信小程序,其他平台请自行测试

zero-switch-看似简单的一个uniapp开关小组件,你真的用明白了吗?

二. 使用方法

<template>
    <view class="container">
        <!-- 默认用法 -->
        <zero-switch v-model="switchBtn"></zero-switch>

        <!-- 单字文字 -->
        <zero-switch v-model="switchBtn" :showText="true" textOn="是" textOff="否"></zero-switch>

        <!-- 多文字,组件会自动加宽并把文字显示在圆点对侧 -->
        <zero-switch
            v-model="switchBtn"
            :showText="true"
            textOn="已开启"
            textOff="已关闭"
        ></zero-switch>

        <!-- 异步控制,loading 时圆点内显示加载状态,并且不可重复点击 -->
        <zero-switch
            v-model="switchBtn"
            :stopChange="true"
            :loading="submitting"
            @change="handleAsync"
        ></zero-switch>

        <!-- 自定义颜色 -->
        <zero-switch
            v-model="switchBtn"
            backgroundColorOff="#f8fafc"
            backgroundColorOn="#dcfce7"
            borderColorOff="#cbd5e1"
            borderColorOn="#86efac"
            activeColor="#16a34a"
            inactiveColor="#64748b"
        ></zero-switch>

        <!-- 渐变玩法 -->
        <zero-switch
            v-model="switchBtn"
            inactive-color="radial-gradient(circle,#fff 10%, #ccc 100%)"
            active-color="radial-gradient(circle,#fff 10%, #007aff 100%)"
        ></zero-switch>

        <!-- 禁用 -->
        <zero-switch v-model="switchBtn" :disabled="true"></zero-switch>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                switchBtn: false,
                submitting: false,
            }
        },
        methods:{
            handleAsync(nextValue) {
                uni.showModal({
                    title: '提示',
                    content: '确定要改变开关状态吗?',
                    success: (res) => {
                        if (res.confirm) {
                            this.submitting = true
                            setTimeout(() => {
                                this.switchBtn = nextValue
                                this.submitting = false
                            }, 800)
                        }
                    }
                });
            }

        },
    }
</script>

三. 参数说明

参数 类型 默认值 描述
value Boolean false 开关状态
activeColor String #007aff 开关开启时圆点颜色
inactiveColor String #cccccc 开关关闭时颜色
backgroundColorOn String #ffffff 开关开启背景颜色
backgroundColorOff String #ffffff 开关关闭背景颜色
borderColorOn String #eeeeee 开关开启边框颜色
borderColorOff String #eeeeee 开关关闭边框颜色
showText Boolean false 是否显示开关内文字,支持单字或多字,多字会自动加宽并显示在圆点对侧
textOn String 开关开启时的文字
textOff String 开关关闭时的文字
size Number 26 开关大小
disabled Boolean false 是否禁用
stopChange Boolean false 是否需要异步控制
loading Boolean false 是否在开关圆点内显示 loading 状态,loading 时不可点击

四. 文字显示规则

  • showText=true 时显示开关内文字。
  • 单字文案会使用更大的字号,适合 是 / 否开 / 关
  • 多字文案会自动加宽开关,并把文字显示在圆点对侧,适合 已开启 / 已关闭同步中 / 等待中
  • 多文字建议控制在 2-4 个中文字符内,过长会影响开关的紧凑性。

五. event

事件 返回值 说明
change value, meta 普通模式返回切换后的值;stopChange=true 时返回将要切换的值

插件预览: code

预览的小程序不一定能及时更新当前插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议