微信小程序实战之自定义模态弹窗(8)
发布时间 - 2026-01-11 00:42:42 点击率:次先看看官方提供的模态弹窗,供大家参考,具体内容如下
api如下:
示例:
这样的模态弹窗,充其量只能做个alert,提示一下信息。
但是并不能使用它来处理复杂性的弹窗业务,因此写了Michael从新自定义了一个,采用了仿原生的样式写法
wxml:
<!--button-->
<view class="btn" bindtap="powerDrawer" data-statu="open">button</view>
<!--mask-->
<view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view>
<!--content-->
<!--使用animation属性指定需要执行的动画-->
<view animation="{{animationData}}" class="drawer_box" wx:if="{{showModalStatus}}">
<!--drawer content-->
<view class="drawer_title">弹窗标题</view>
<view class="drawer_content">
<view class="top grid">
<label class="title col-0">标题</label>
<input class="input_base input_h30 col-1" name="rName" value="可自行定义内容"></input>
</view>
<view class="top grid">
<label class="title col-0">标题</label>
<input class="input_base input_h30 col-1" name="mobile" value="110"></input>
</view>
<view class="top grid">
<label class="title col-0">标题</label>
<input class="input_base input_h30 col-1" name="phone" value="拒绝伸手党"></input>
</view>
<view class="top grid">
<label class="title col-0">标题</label>
<input class="input_base input_h30 col-1" name="Email" value="仅供学习使用"></input>
</view>
<view class="top bottom grid">
<label class="title col-0">备注</label>
<input class="input_base input_h30 col-1" name="bz"></input>
</view>
</view>
<view class="btn_ok" bindtap="powerDrawer" data-statu="close">确定</view>
</view>
wxss:
/*button*/
.btn {
width: 80%;
padding: 20rpx 0;
border-radius: 10rpx;
text-align: center;
margin: 40rpx 10%;
background: #000;
color: #fff;
}
/*mask*/
.drawer_screen {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 1000;
background: #000;
opacity: 0.5;
overflow: hidden;
}
/*content*/
.drawer_box {
width: 650rpx;
overflow: hidden;
position: fixed;
top: 50%;
left: 0;
z-index: 1001;
background: #FAFAFA;
margin: -150px 50rpx 0 50rpx;
border-radius: 3px;
}
.drawer_title{
padding:15px;
font: 20px "microsoft yahei";
text-align: center;
}
.drawer_content {
height: 210px;
overflow-y: scroll; /*超出父盒子高度可滚动*/
}
.btn_ok{
padding: 10px;
font: 20px "microsoft yahei";
text-align: center;
border-top: 1px solid #E8E8EA;
color: #3CC51F;
}
.top{
padding-top:8px;
}
.bottom {
padding-bottom:8px;
}
.title {
height: 30px;
line-height: 30px;
width: 160rpx;
text-align: center;
display: inline-block;
font: 300 28rpx/30px "microsoft yahei";
}
.input_base {
border: 2rpx solid #ccc;
padding-left: 10rpx;
margin-right: 50rpx;
}
.input_h30{
height: 30px;
line-height: 30px;
}
.input_h60{
height: 60px;
}
.input_view{
font: 12px "microsoft yahei";
background: #fff;
color:#000;
line-height: 30px;
}
input {
font: 12px "microsoft yahei";
background: #fff;
color:#000 ;
}
radio{
margin-right: 20px;
}
.grid { display: -webkit-box; display: box; }
.col-0 {-webkit-box-flex:0;box-flex:0;}
.col-1 {-webkit-box-flex:1;box-flex:1;}
.fl { float: left;}
.fr { float: right;}
js:
Page({
data: {
showModalStatus: false
},
powerDrawer: function (e) {
var currentStatu = e.currentTarget.dataset.statu;
this.util(currentStatu)
},
util: function(currentStatu){
/* 动画部分 */
// 第1步:创建动画实例
var animation = wx.createAnimation({
duration: 200, //动画时长
timingFunction: "linear", //线性
delay: 0 //0则不延迟
});
// 第2步:这个动画实例赋给当前的动画实例
this.animation = animation;
// 第3步:执行第一组动画
animation.opacity(0).rotateX(-100).step();
// 第4步:导出动画对象赋给数据对象储存
this.setData({
animationData: animation.export()
})
// 第5步:设置定时器到指定时候后,执行第二组动画
setTimeout(function () {
// 执行第二组动画
animation.opacity(1).rotateX(0).step();
// 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
this.setData({
animationData: animation
})
//关闭
if (currentStatu == "close") {
this.setData(
{
showModalStatus: false
}
);
}
}.bind(this), 200)
// 显示
if (currentStatu == "open") {
this.setData(
{
showModalStatus: true
}
);
}
}
})
运行:
为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# 微信小程序
# 模态弹窗
# 微信小程序常用的3种提示弹窗实现详解
# 微信小程序实现自定义modal弹窗封装的方法
# 微信小程序实现自定义picker选择器弹窗内容
# 微信小程序实现漂亮的弹窗效果
# 微信小程序vant弹窗组件的实现方式
# 微信小程序自定义弹窗实现详解(可通用)
# 微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
# 微信小程序 弹窗自定义实例代码
# 微信小程序自定义模态弹窗组件详解
# 微信小程序实现底部弹窗
# 第一组
# 模态
# 仅供
# 较高
# 采用了
# 做个
# 写了
# 自定义
# 并不能
# 它来
# 小编
# 具体内容
# 时长
# 大家多多
# 程序开发
# label
# title
# top
# grid
# input_base
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
Swift中swift中的switch 语句
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
Python文件操作最佳实践_稳定性说明【指导】
Laravel如何配置和使用缓存?(Redis代码示例)
详解阿里云nginx服务器多站点的配置
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
大连网站制作公司哪家好一点,大连买房网站哪个好?
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
利用vue写todolist单页应用
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel如何处理文件下载请求?(Response示例)
js实现获取鼠标当前的位置
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
在centOS 7安装mysql 5.7的详细教程
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
Laravel中的Facade(门面)到底是什么原理
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
iOS UIView常见属性方法小结
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
如何在服务器上配置二级域名建站?
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
如何打造高效商业网站?建站目的决定转化率
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel如何实现API版本控制_Laravel版本化API设计方案
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何快速搭建FTP站点实现文件共享?
免费网站制作appp,免费制作app哪个平台好?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
详解jQuery中基本的动画方法
Laravel如何实现文件上传和存储?(本地与S3配置)
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel如何使用withoutEvents方法临时禁用模型事件
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
独立制作一个网站多少钱,建立网站需要花多少钱?
手机软键盘弹出时影响布局的解决方法
如何快速搭建自助建站会员专属系统?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
如何在阿里云部署织梦网站?
做企业网站制作流程,企业网站制作基本流程有哪些?

