更新记录
0.3.1(2026-06-24)
- 修复微信小程序端
v-model绑定无效导致点击无法打开弹窗的问题(推荐使用:show.sync) - 新增
valueprop,兼容小程序端v-model默认的value/input绑定 - 恢复胶囊输入框、按钮按压反馈、头像编辑条等完整视觉样式
- 补全小程序
button默认样式重置(border、::after等),避免按钮显示异常 - 弹窗层
z-index提升至 10000,避免被自定义 TabBar 等 fixed 层遮挡 - 底部增加安全区 padding,完善关闭动画
0.3.0(2026-03-12)
- 重写内部实现,统一使用
uni-popup底部抽屉样式,视觉与交互全面升级 - 保持
show / personal / user / skipCompleteInfo等 Props 不变,兼容:show.sync/v-model:show两种用法 - 新增
show-close配置项,用于控制右上角关闭按钮的显示 - 示例逻辑改为纯前端 Demo,不再内置真实接口调用,更方便从组件市场独立集成
0.2.0(2025-05-21)
- 新增主题色自定义功能
- 新增遮罩层背景色自定义功能
- 新增遮罩层模糊效果控制功能
- 优化样式绑定方式,提升兼容性
平台兼容性
uni-app(4.86)
| Vue2 | Vue2插件版本 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | 0.1.0 | √ | 0.1.0 | √ | √ | √ | - | √ | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | - | - | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| × | × | √ |
login-popup 登录弹窗组件
一个功能完善的登录弹窗组件,支持一键登录、完善个人信息、主题定制等功能。基于 uni-popup 底部抽屉实现,适配微信小程序及多端。
功能特点
- 一键登录 / 完善个人信息(头像、昵称、手机号)
- 主题色、遮罩色、遮罩模糊可配置
- 支持
:show.sync与v-model两种显隐绑定方式 - 内置小程序
button样式重置,开箱即用 - 弹窗层级高于常见 TabBar(
z-index: 10000)
依赖
本组件依赖 uni-popup(uni_modules/uni-popup)。通过 uni_modules 导入时通常已随项目一并存在。
安装
在 DCloud 插件市场找到本插件,点击「使用 HBuilderX 导入插件」即可。
基本用法
微信小程序(Vue 2)推荐写法:请使用
:show.sync,不要直接使用v-model。
小程序编译会把v-model转为value/input,可能导致弹窗无法打开(0.3.1 起已兼容value,但仍建议:show.sync)。
<template>
<view>
<button @tap="openLogin">打开登录弹窗</button>
<login-popup
:show.sync="showLogin"
theme-color="#c45c26"
:enable-mask-blur="true"
mask-background-color="rgba(0, 0, 0, 0.45)"
@success="onLoginSuccess"
@closed="onPopupClosed"
/>
</view>
</template>
<script>
export default {
data() {
return {
showLogin: false
}
},
methods: {
openLogin() {
this.showLogin = true
},
onLoginSuccess(data) {
// { headImg, nickname, Phone }
console.log('登录成功', data)
this.showLogin = false
},
onPopupClosed() {
this.showLogin = false
}
}
}
</script>
完善资料模式
<login-popup
:show.sync="showLogin"
:personal="true"
:user="{ headImg, nickname, Phone }"
theme-color="#c45c26"
@success="onLoginSuccess"
/>
设置 personal 为 true 时,弹窗直接展示完善信息表单,并可用 user 预填已有资料。
API
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| show | Boolean | false |
是否显示弹窗,配合 :show.sync 使用 |
| value | Boolean | false |
兼容小程序端 v-model 默认绑定(等同 show) |
| personal | Boolean | false |
是否直接进入完善信息界面 |
| user | Object | {} |
用户信息,字段:headImg、nickname、Phone |
| skipCompleteInfo | Boolean | false |
是否跳过完善信息(示例逻辑,真实业务由集成方处理) |
| theme-color | String | #00AF66 |
主题色(按钮、聚焦边框、获取手机号文字等) |
| enable-mask-blur | Boolean | true |
是否启用遮罩模糊 |
| mask-background-color | String | rgba(0,0,0,0.5) |
遮罩背景色 |
| show-close | Boolean | true |
是否显示右上角关闭按钮 |
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| success | 一键登录或保存资料成功 | { headImg, nickname, Phone } |
| closed | 弹窗关闭时触发 | — |
| update:show | :show.sync 双向绑定 |
Boolean |
| input | v-model 兼容事件 |
Boolean |
主题定制示例
<login-popup
:show.sync="showLogin"
theme-color="#FF5733"
:enable-mask-blur="true"
mask-background-color="rgba(0, 0, 0, 0.7)"
/>
注意事项
- 组件示例为纯前端 Demo,一键登录 / 保存逻辑需由业务方自行对接接口
- 头像、昵称、手机号能力依赖各小程序平台开放接口,请在管理后台配置相应权限
- 与自定义 TabBar 同屏使用时,组件已内置较高
z-index;若仍被遮挡,请检查页面其他 fixed 层 - 小程序内触发按钮请使用
@tap,避免@click在部分场景无响应
平台兼容性
| H5 | App | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ |
常见问题
Q: 点击按钮弹窗没有反应?
A: 请确认使用 :show.sync="showLogin" 绑定显隐,并在打开时执行 this.showLogin = true。若使用 v-model,请升级到 0.3.1+;仍推荐 :show.sync。
Q: 按钮样式很丑(绿色边框、多余 padding)?
A: 0.3.1 起组件内已重置小程序 button 默认样式。若自定义外层按钮,需自行添加 border: none 与 &::after { border: none }。
Q: 弹窗被 TabBar 挡住?
A: 0.3.1 起弹窗 z-index 为 10000。请确认 TabBar 未使用更高层级,或升级至最新版本。
Q: 无法获取头像 / 昵称 / 手机号?
A: 请在对应小程序管理后台开启相关接口权限,并在真机环境验证。
更新日志
详见 changelog.md

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 173
赞赏 0
下载 12448839
赞赏 1935
赞赏
京公网安备:11010802035340号