更新记录
1.0.1(2026-11-12) 下载此版本
新增
ref新增Open()方法,配合已有Close()可编程控制显隐。
优化
- 通过
v-model(modelValue传false)关闭时,同样执行缩放退场动画,不再直接消失。 - 打开/关闭增加防重入与定时器清理,快速切换不会叠加动画。
- 动画时长提取为常量(
OPEN_DELAY/CLOSE_DURATION)。
平台兼容性
uni-app(5.0)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | √ | × | × | √ | × | × | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | - | - | - | - | - | - |
y-dialog
y-dialog 是面向 uni-app(Vue 3) 的弹窗/遮罩组件,支持 v-model 控制显隐、遮罩点击关闭、缩放动画与透明遮罩。
- 当前版本:
1.0.1 - 依赖:强依赖
y-scss(弹窗的定位、遮罩、动画全部依赖它的工具类,缺失时组件无法正常显示)
⚠️ 强依赖
y-scss,必须先安装并引入组件模板使用的
fixed、t-0、l-0、zinx-99999、d-flex、ai-center、jc-center、bgc-inverse-3、t-ease、t-scale-0、t-scale-1等类全部来自y-scss。 未引入y-scss时,弹窗会失去全屏定位、遮罩背景和缩放动画,内容会直接平铺在页面上。package.json已通过uni_modules.dependencies声明该依赖,HBuilderX 导入y-dialog时会提示一并安装。
特性
- 两种控制方式:
v-model、ref调用Open()/Close()。 - 遮罩渐显 + 内容缩放动画;通过
v-model关闭同样有退场动画。 - 支持点击遮罩关闭、关闭回调、遮罩透明模式。
- 打开/关闭防重入,快速切换不会叠加动画定时器。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
modelValue |
Boolean |
false |
弹窗显隐,配合 v-model |
mask |
Boolean |
true |
是否显示遮罩背景 |
maskClosable |
Boolean |
true |
点击遮罩是否关闭 |
maskTransparent |
Boolean |
false |
遮罩是否透明 |
事件
| 事件 | 参数 | 说明 |
|---|---|---|
update:modelValue |
Boolean |
关闭动画结束后触发,用于 v-model 同步 |
close |
- | 关闭动画结束后触发(含 v-model 关闭、遮罩关闭、ref 关闭) |
handleMask |
- | 点击遮罩时触发(无论是否可关闭) |
用法
方式一:v-model
<template>
<view>
<button @click="isShow = true">打开弹窗</button>
<y-dialog v-model="isShow" @close="onClosed">
<view class="w-690 glass-bg br-40 o-hidden">
<view class="bgc-container p-30">
<text class="fs-26 c-text">弹窗内容</text>
</view>
</view>
</y-dialog>
</view>
</template>
<script setup>
import { ref } from 'vue'
const isShow = ref(false)
function onClosed() {
console.log('弹窗已关闭')
}
</script>
方式二:ref 编程控制
<y-dialog ref="dialogRef" :maskClosable="false" v-model="isShow" @close="HandleClose">
<view class="bgc-container p-30">内容</view>
</y-dialog>
<script setup>
const dialogRef = ref(null)
function Open() {
dialogRef.value.Open()
}
function Close() {
dialogRef.value.Close()
}
</script>
说明
- 弹窗内容通过默认插槽传入,样式由使用方决定(如配合
glass-bg、bgc-container)。 - 关闭动画结束后才触发
update:modelValue/close,期间弹窗保留缩放退场。 maskTransparent为true时遮罩透明,只保留内容与点击关闭行为。- 组件强依赖
y-scss的工具类:fixed、t-0、l-0、zinx-99999、d-flex、ai-center、jc-center、bgc-inverse-3、t-ease、t-scale-0、t-scale-1、o-visible,未引入会导致弹窗无法正常显示,详见顶部注意事项。
更新日志
见 changelog.md。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 9
赞赏 0
下载 12761959
赞赏 1959
赞赏
京公网安备:11010802035340号