您好,登錄后才能下訂單哦!
小程序開發中如何實現一個底部彈出模態框功能?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
具體內容如下
代碼:
<view class="modals modals-bottom-dialog" hidden="{{hideModal}}" > <view class="modals-cancel" bindtap="hideModal"></view> <view class="bottom-dialog-body bottom-pos" animation="{{animationData}}"> <view class="comment_top"> <view></view> <view class="comment_num">{{comment.length}}條評論</view> <view class="comment_close" bindtap="hideModal">×</view> </view> <view class="comment_list"> <view class="comment_li" wx:for="{{comment}}" wx:key="{{index}}"> <image class="comment_li_img" src="{{item.headpic}}"></image> <view class="comment_li_info"> <view class="comment_li_name">{{item.nickname}}</view> <view class="comment_li_content">{{item.memo}} <text class="comment_li_date">9-24</text> </view> </view> </view> </view> <view class="comment_inputbox"> <input class="comment_input" maxlength="120" adjust-position value="{{commentform}}" bindinput="commentinput" placeholder="有何高見,講來聽聽"></input> <view class="comment_sendbtn" bindtap="sendcomment">發送</view> </view> </view> </view>
CSS:
/* 評論 */ /*模態框*/ .modals{ position:fixed; z-index: 100000; 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{ width: 99%; margin: 0 auto; position:absolute; z-index:10001; bottom:0; left:0; right:0; height:65%; background-color: #fff; border-top-left-radius: 10rpx; border-top-right-radius: 10rpx; overflow: hidden; display: flex; flex-direction: column; } /*動畫前初始位置*/ .bottom-pos{ -webkit-transform:translateY(100%); transform:translateY(100%); } .comment_top{ width: 100%; display: flex; justify-content: space-between; align-items: center; border-bottom: 1rpx solid #f2f2f2; padding: 10rpx 24rpx; box-sizing: border-box; } .comment_num{ font-size: 30rpx; } .comment_close{ font-size: 62rpx; line-height: 50rpx; } .comment_list{ flex: 1; overflow: hidden; } .comment_li{ display: flex; padding: 10rpx 24rpx; box-sizing: border-box; } .comment_li_img{ width: 40rpx; height: 40rpx; border-radius: 50%; margin-right: 16rpx; } .comment_li_info{ flex: 1; } .comment_li_name{ font-size: 30rpx; } .comment_li_content{ font-size: 28rpx; } .comment_li_date{ color: #999; font-size: 24rpx; margin-left: 20rpx; } .comment_inputbox{ display: flex; padding: 20rpx 24rpx; box-sizing: border-box; align-items: center; justify-content: space-between; border-top: 1rpx solid #f2f2f2; } .comment_input{ font-size: 30rpx; flex: 1; } .comment_sendbtn{ font-size: 30rpx; background: #dd5923; color: #fff; padding: 5rpx 18rpx; border-radius: 10rpx; }
js:
Page({ data: { hideModal: true, //模態框的狀態 true-隱藏 false-顯示 animationData: {}, }, // 顯示遮罩層 showModal: function () { var that = this; that.setData({ hideModal: false }) var animation = wx.createAnimation({ duration: 600,//動畫的持續時間 默認400ms 數值越大,動畫越慢 數值越小,動畫越快 timingFunction: 'ease',//動畫的效果 默認值是linear }) this.animation = animation setTimeout(function () { that.fadeIn();//調用顯示動畫 }, 200) }, // 隱藏遮罩層 hideModal: function () { var that = this; var animation = wx.createAnimation({ duration: 800,//動畫的持續時間 默認400ms 數值越大,動畫越慢 數值越小,動畫越快 timingFunction: 'ease',//動畫的效果 默認值是linear }) this.animation = animation that.fadeDown();//調用隱藏動畫 setTimeout(function () { that.setData({ hideModal: true }) }, 720)//先執行下滑動畫,再隱藏模塊 }, //動畫集 fadeIn: function () { this.animation.translateY(0).step() this.setData({ animationData: this.animation.export()//動畫實例的export方法導出動畫數據傳遞給組件的animation屬性 }) }, fadeDown: function () { this.animation.translateY(300).step() this.setData({ animationData: this.animation.export(), }) }, })
關于小程序開發中如何實現一個底部彈出模態框功能問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。