前言:
当前咱们对“css弹框”大体比较关切,咱们都想要知道一些“css弹框”的相关知识。那么小编也在网络上网罗了一些关于“css弹框””的相关资讯,希望咱们能喜欢,咱们快快来学习一下吧!前言
入门小程序,熟悉了wxml与wxss语法后,还是有一些效果短时间实现不了, 今天写出两种常见的弹框
中间弹框wxml:
<view class="view-mask" bindtap="onClickDialogCenter" wx:if="{{showCenterrDialog}}" style="z-index:31 " ><view class="zan-dialog {{ showCenterrDialog ? 'zan-dialog--show' : '' }}"><!-- 遮罩层 可以加Bindtap控制是否让弹框消失 --> <view class="zan-dialog__mask" /> <view class="zan-dialog__container2"> //这里面写你自己的弹框布局 <image style="width: 560rpx; height: 560rpx; " src="/images/ic_index_dialog_register.png" ></image> <button class="btn-login" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo"></button> </view></view></view>
在当前wxml最下面加上弹框的布局, 比较重要的是view-mask ,他的wxss属性需要 position: fixed;,具体我们来看一下:
wxcss:
/* 自定义居中弹框------------------- */.zan-dialog__mask { display: none; font-family:PingFangSC-Regular,PingFangSC; position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 2;background:rgba(0,0,0,0.5); }.zan-dialog__container { align-items: center; display: flex; flex-direction: column; position: fixed; width: 670rpx; height: 522rpx;top:50%;left:50%;transform:translateX(-50%) translateY(-50%); background: #ffffff; z-index: 40; border-radius: 24rpx;}.zan-dialog--show .zan-dialog__container {}.zan-dialog--show .zan-dialog__mask { display: block;}.view-mask{ z-index: 2; width: 100vw; height: 100vh; position: fixed; top: 0; left: 0; background: rgba(0, 0, 0, 0.5)}.view-raise-dialog2{ display: flex; flex-direction: column; border-radius: 16rpx; background: #EEFFE7; margin-top: 20rpx; height: 174rpx; width: 550rpx;}.btn-raise-dialog{ height: 96rpx; line-height: 96rpx; border-radius: 0rpx 0rpx 24rpx 24rpx; width: 100%; margin-top: 60rpx; background:linear-gradient(90deg,rgba(111,194,49,1) 0%,rgba(160,243,106,1) 100%); position: absolute; bottom: 0; font-size: 32rpx; color: #ffffff; }.zan-dialog__container2 { align-items: center; display: flex; flex-direction: column; position: fixed; width: 670rpx; height: 522rpx;top:50%;left:50%;transform:translateX(-50%) translateY(-50%); z-index: 40; border-radius: 24rpx;}/* --------------------------------------------- */Js代码:
/** * 页面的初始数据 */ data: { showCenterrDialog: false, },
/*** * 中间弹框点击事件 */ onClickDialogCenter:function(){ this.setData({ showCenterrDialog: !this.data.showCenterrDialog }) },底部弹框wxml
<!-- 自定义底部弹框 --><view class="modals modals-bottom-dialog" bindtap="hideModal" hidden="{{hideModal}}" catchtouchmove="preventTouchMove" > <view class="modals-cancel" ></view> <!-- modals中删除了bindtap="hideModal"只能点击确定才能消失 --> <view class="bottom-dialog-body bottom-pos" animation="{{animationData}}"> //这里写你自己的布局 </view></view>wxss
/*底部弹框 ---*/.modals{position:fixed; z-index: 999; top:0; left: 0; right:0; bottom: 0;}.modals-cancel{position:absolute; z-index:1000; top:0; left: 0; right:0; bottom: 0; background-color: rgba(0,0,0,.5);}.bottom-dialog-body{font-family:PingFangSC-Regular,PingFangSC;position:absolute; z-index:10001; bottom:0; left:0; right:0; height: 1040rpx; background-color: #fff; border-radius: 16rpx 16rpx 0rpx 0rpx; display: flex;flex-direction: column; }/*动画前初始位置*/.bottom-pos{-webkit-transform:translateY(100%);transform:translateY(100%);}js文件
/** * 页面的初始数据 */ data: { hideModal: true, //模态框的状态 true-隐藏 false-显示 },
// 显示遮罩层 showModal: function () { var that = this; that.setData({ hideModal: false }) var animation = wx.createAnimation({ duration: 400,//动画的持续时间 默认400ms 数值越大,动画越慢 数值越小,动画越快 timingFunction: 'ease',//动画的效果 默认值是linear }) this.animation = animation setTimeout(function () { that.fadeIn();//调用显示动画 }, 200) }, // 隐藏遮罩层 hideModal: function () { var that = this; var animation = wx.createAnimation({ duration: 400,//动画的持续时间 默认400ms 数值越大,动画越慢 数值越小,动画越快 timingFunction: 'ease',//动画的效果 默认值是linear }) this.animation = animation that.fadeDown();//调用隐藏动画 setTimeout(function () { that.setData({ hideModal: true }) }, 200)//先执行下滑动画,再隐藏模块 }, //动画集 fadeIn: function () { this.animation.translateY(0).step() this.setData({ animationData: this.animation.export()//动画实例的export方法导出动画数据传递给组件的animation属性 }) }, fadeDown: function () { this.animation.translateY(600).step() this.setData({ animationData: this.animation.export(), }) },
希望对大家有所帮助!
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #css弹框