• 实用工具 小学数学练习 字帖生成 在线画板 函数绘制 拼音字母表 在线词典 黄历查询 中国历史 Excel函数 模拟请求 json格式化
  • 最新更新
  • 全站导航
  • 登陆/注册
  • 原创投稿
名师互学网
  • 知识解答知识解答
  • 合同文书合同文书
  • 教育问答教育问答
  • 最新资讯最新资讯
  • 学术期刊学术期刊
  • 资料下载资料下载
高考报名时间2022年11月1日还剩 天 距离2023年6月7日高考还有 天
  • 网站首页
  • 小学
  • 初中
  • 高中
  • 语言
  • 会计
  • 驾考
  • 学历
  • 司法
  • IT
  • 医护
  • 建筑
  • 作文
栏目分类:
  • 前沿技术
  • 软件开发
  • 系统运维
  • 产品运营
  • 生活办公
  • 面试经验
  • 考试题库
子分类:
  • 人工智能
  • 大数据
  • 云计算
  • 区块链
  • 物联网
  • 深度学习
  • 机器学习
  • NLP
  • 计算机视觉
  • 语音识别
  • 其他
  • 大数据系统
  • 数据可视化
  • 数据挖掘与分析
  • 其他
  • Docker/k8s
  • 虚拟化
  • 云平台
  • 其他
  • 基本原理
  • 数字货币
  • 智能合约
  • EOS应用
  • 其他
  • 通讯技术
  • 嵌入式开发
  • 单片机
  • 物联网应用
  • HarmonyOS
  • 其他
  • 后端开发
  • Web开发
  • 移动开发
  • 游戏开发
  • Python
  • Java
  • 架构设计
  • C/C++/C#
  • PHP
  • .Net
  • Go语言
  • R语言
  • asp
  • Html/CSS
  • 易语言
  • JavaScript
  • 汇编语言
  • Vue.js
  • React.JS
  • Ruby开发
返回
名师互学网
名师互学网用户登录
名师互学网
快速导航关闭
当前搜索
当前分类
前沿技术 软件开发 系统运维 产品运营 生活办公 面试经验 考试题库
子分类
人工智能 大数据 云计算 区块链 物联网 深度学习 机器学习 NLP 计算机视觉 语音识别 其他 大数据系统 数据可视化 数据挖掘与分析 其他 Docker/k8s 虚拟化 云平台 其他 基本原理 数字货币 智能合约 EOS应用 其他 通讯技术 嵌入式开发 单片机 物联网应用 HarmonyOS 其他 后端开发 Web开发 移动开发 游戏开发 Python Java 架构设计 C/C++/C# PHP .Net Go语言 R语言
实用工具
学习工具 小学数学练习 字帖生成 在线画板 函数绘制 拼音字母表 在线词典 黄历查询 亲戚关系计算 安全期计算 中国历史 Excel函数 模拟请求 json格式化 浏览器指纹
热门搜索
路由器设置 木托盘 宝塔面板 儿童python教程 心情低落 朋友圈 vim 双一流学科 专升本 我的学校 日记学校 西点培训学校 汽修学校 情书 化妆学校 塔沟武校 异形模板 西南大学排名 最精辟人生短句 6步教你追回被骗的钱 南昌大学排名 清朝十二帝 北京印刷学院排名 北方工业大学排名 北京航空航天大学排名 首都经济贸易大学排名 中国传媒大学排名 首都师范大学排名 中国地质大学(北京)排名 北京信息科技大学排名
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

微信小程序实现自定义modal弹窗封装的方法

JavaScript 更新时间:2026-03-30 05:13:44 发布时间:1852天前 IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微信小程序实现自定义modal弹窗封装的方法

前言

小程序官方提供了 wx.showModal 方法,但样式比较固定,不能满足多元化需求,自定义势在必行~

老规矩先上图

点击某个按钮,弹出 modal框,里面的内容可以自定义,可以是简单的文字提示,也可以输入框等复杂布局。操作完点击取消或确定关闭 modal.

如何使用

将下面的 modal.wxml 、modal.wxss 、modal.js 、modal.json 四个文件复制到对应位置即可。

封装完之后调用起来也很简单,看看调用的代码吧


   
  
  

在modal中定义了 slot,所以可以将需要展示的任何布局包裹在 modal 中。

上面的代码简化一下就是


  你自己的布局

需要传四个属性

show :用来控制 modal 的显示隐藏。

height : 定义 modal 的高度,可以是百分比,也可以是具体单位如 600rpx。

bindcancel :点击取消按钮的回调。

bindconfirm :点击确定按钮的回调。

自己的布局用一个 view 包起来放到 modal 标签里即可。

开始封装

首先在你存放自定义组件的文件夹里新建个 modal 文件夹,个人习惯将所有组件都放在 components 下面。

然后右键新建 component,注意是 component 不是 page ,因为要作为组件引入到页面中。

先看布局吧

modal.wxml


 
  
   
  
  
   取消
   确定
  
 

布局讲解

最外层是半透明的 mask 蒙版,覆盖了整个页面。里面是包裹内容的 view ,内容区有两层,上面是放置传入布局的主内容区,下面是取消和确定两个按钮。

这里把 slot 用 scroll-view 包裹了起来,处理了传入的布局高度超出内容区域的问题,如果超出将会滚动。所以不必担心传入的布局高度,大胆用就行。

内容区的高度通过属性传入的 height 确定,默认是 80%

modal.wxss
.mask{
 position: absolute;
 left: 0;
 right: 0;
 top: 0;
 bottom: 0;
 display: flex;
 justify-content: center;
 align-items: center;
 background-color: rgba(0,0,0,0.4);
 z-index: 9999;
}

.modal-content{
 display: flex;
 flex-direction: column;
 width: 90%;
 
 background-color: #fff;
 border-radius: 10rpx;
}

.modal-btn-wrapper{
 display: flex;
 flex-direction: row;
 height: 100rpx;
 line-height: 100rpx;
 border-top: 2rpx solid rgba(7,17,27,0.1);
}

.cancel-btn, ./confirm/i-btn{
 flex: 1;
 height: 100rpx;
 line-height: 100rpx;
 text-align: center;
 font-size: 32rpx;
}

.cancel-btn{
 border-right: 2rpx solid rgba(7,17,27,0.1);
}

.main-content{
 flex: 1;
 height: 100%;
 overflow-y: hidden; 
}

css讲解

css没啥讲的,直接复制过去就行。

注意几个点:

将 .mask 的 z-index 设置的高一些,确保能在所有布局的最上层。

modal.js



Component({

 
 properties: {
  //是否显示modal
  show: {
   type: Boolean,
   value: false
  },
  //modal的高度
  height: {
   type: String,
   value: '80%'
  }
 },

 
 data: {

 },

 
 methods: {
  clickMask() {
   // this.setData({show: false})
  },

  cancel() {
   this.setData({ show: false })
   this.triggerEvent('cancel')
  },

  confirm() {
   this.setData({ show: false })
   this.triggerEvent('/confirm/i')
  }
 }
})

Js 代码也很简单,在 properties 中定义两个需传入的属性 show 和 height ,并指定默认值。

在 methods 中写点击取消和确定按钮的回调,点击按钮后先通过 this.setData({ show: false }) 将 modal 隐藏掉,再通过 this.triggerEvent('/confirm/i') 将点击事件传递出去。

modal.json
{
 "component": true,
 "usingComponents": {}
}

json 主要是声明 modal 为组件

结语

以上就是简单的 modal 弹窗封装。如果不想要下面的确定取消两个按钮,内容区的所有内容都要外部传入,可以这样写


  

如果需要多个 slot 也可以,小程序都支持。

具体怎么实现看具体的业务需求吧,自定义的组件就是灵活性非常高,可以根据业务需求进行调整。

以上所述是小编给大家介绍的微信小程序实现自定义modal弹窗封装的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/80645.html

上一篇 微信小程序自定义tab实现多层tab嵌套功能

下一篇 生成随机数rand函数的用法详解

JavaScript相关栏目本月热门文章

  • 1【Linux驱动开发】设备树详解(二)设备树语法详解
  • 2别跟客户扯细节
  • 3Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区
  • 4【Java】对象处理流(ObjectOutputStream和ObjectInputStream)
  • 5【分页】常见两种SpringBoot项目中分页技巧
  • 6一文带你搞懂OAuth2.0
  • 7我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍
  • 8【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成
  • 9JavaSE - 封装、static成员和内部类
  • 10树莓派mjpg-streamer实现监控及拍照功能调试
  • 11用c++写一个蓝屏代码
  • 12从JDK8源码中看ArrayList和LinkedList的区别
  • 13idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目
  • 14在openwrt使用C语言增加ubus接口(包含C uci操作)
  • 15Spring 解决循环依赖
  • 16SpringMVC——基于MVC架构的Spring框架
  • 17Andy‘s First Dictionary C++ STL set应用
  • 18动态内存管理
  • 19我的创作纪念日
  • 20Docker自定义镜像-Dockerfile
热门相关搜索
路由器设置 木托盘 宝塔面板 儿童python教程 心情低落 朋友圈 vim 双一流学科 专升本 我的学校 日记学校 西点培训学校 汽修学校 情书 化妆学校 塔沟武校 异形模板 西南大学排名 最精辟人生短句 6步教你追回被骗的钱 南昌大学排名 清朝十二帝 北京印刷学院排名 北方工业大学排名 北京航空航天大学排名 首都经济贸易大学排名 中国传媒大学排名 首都师范大学排名 中国地质大学(北京)排名 北京信息科技大学排名 中央民族大学排名 北京舞蹈学院排名 北京电影学院排名 中国戏曲学院排名 河北政法职业学院排名 河北经贸大学排名 天津中德应用技术大学排名 天津医学高等专科学校排名 天津美术学院排名 天津音乐学院排名 天津工业大学排名 北京工业大学耿丹学院排名 北京警察学院排名 天津科技大学排名 北京邮电大学(宏福校区)排名 北京网络职业学院排名 北京大学医学部排名 河北科技大学排名 河北地质大学排名 河北体育学院排名
学习工具
代数计算器
三角函数
解析几何
立体几何
知识解答
教育知识
百科知识
生活知识
常识知识
写作必备
作文大全
作文素材
句子大全
实用范文
关于我们
关于我们
联系我们
网站地图
交流群

名师互学网交流群

名师互学网客服

名师互学网客服

名师互学网 版权所有 (c)2021-2022 ICP备案号:晋ICP备2021003244-6号

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号