最近发现一个比较好用的小程序自定义模态框,将其简化了一下,可以在框内放入想要的内容。
具体内容如下:
index.wxml
- <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}}">
- <view class="drawer_title">弹窗标题</view>
- <view class="drawer_content">
- </view>
- <view class="btn_ok" bindtap="powerDrawer" data-statu="close">确定</view>
- </view>
index.wxss
- .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;
- }
index.js
- Page({
- data: {
- showModalStatus: false
- },
- powerDrawer: function (e) {
- var currentStatu = e.currentTarget.dataset.statu;
- this.util(currentStatu)
- },
- util: function (currentStatu) {
- var animation = wx.createAnimation({
- duration: 200,
- timingFunction: "linear",
- delay: 0
- });
- this.animation = animation;
- animation.opacity(0).rotateX(-100).step();
- this.setData({
- animationData: animation.export()
- })
- 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
- }
- );
- }
- }
- })
新闻热点
疑难解答