這篇文章將為大家詳細講解有關(guān)微信小程序如何實現(xiàn)彈出菜單功能,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)永登,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
需求
點擊標簽欄按鈕,向下彈出菜單,再次點擊,收回菜單
要解決的問題
標簽欄三欄樣式,標簽欄固定不動;
點擊標簽欄彈出菜單,并且出現(xiàn)透明遮罩;
遮罩優(yōu)先級在彈出框之下;
彈出框內(nèi)標簽的設(shè)置;
滾動欄滾動條的隱藏
如何解決?
彈性布局,橫向,三者平分整欄;
狀態(tài)監(jiān)聽點擊事件,數(shù)據(jù)控制hide或者show,通過rgba設(shè)置透明度
彈出框設(shè)置z-index;
彈性布局flex 橫向排列 超出后wrap 然后space-around控制間距
::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
具體實現(xiàn)
wxml
城市篩選 職位篩選 排序方式 {{item}} {{item.title}} {{type}} 智能排序 時間排序 薪資排序 搜索
wxss
page { position: relative; width: 100%; height: 100vh; } .header { width: 100%; height: 80rpx; position: fixed; top: 0; display: flex; flex-direction: row; justify-content: space-between; text-align: center; color: #313131; font-size: 16px; border-bottom: 1rpx solid #eeeeee; z-index: 9999; background-color: #fff; } .filterCity { flex: 1; position: relative; height: 80rpx; line-height: 80rpx; } .filterJob { position: relative; flex: 1; height: 80rpx; line-height: 80rpx; } .filterOrder { position: relative; flex: 1; height: 80rpx; line-height: 80rpx; } .header image { position: absolute; right: 15rpx; top: 26rpx; width: 30rpx; height: 30rpx; } .active { color: #ef0001; } .mask { width: 100%; height: 100%; position: fixed; top: 80rpx; background-color: rgba(15, 15, 26, 0.3); } .cityContainer { display: flex; flex-direction: row; justify-content: space-around; align-items: space-between; flex-wrap: wrap; width: 100%; height: 300rpx; z-index: 999; background-color: #fff; border-bottom: 1rpx solid #e9e9e9; padding-bottom: 130rpx; } .cityContainer .city { display: block; font-size: 15px; margin-top: 100rpx; width: 150rpx; height: 50rpx; line-height: 50rpx; text-align: center; border: 1rpx solid #e9e9e9; overflow: hidden; } .select { color: #ffffff; background-color: #ed0000; } .posContainer { height: 980rpx; width: 100%; background-color: #fff; /* overflow:auto; */ } ::-webkit-scrollbar { width: 0; height: 0; color: transparent; } .title { margin-top: 55rpx; font-size: 15px; margin-left: 28rpx; } .poscontent { width: 100%; display: flex; flex-direction: row; justify-content: flex-start; flex-wrap: wrap; margin-top: -15rpx; } .tag { margin-left: 28rpx; margin-top: 23rpx; font-size: 13px; width: 150rpx; height: 50rpx; line-height: 50rpx; text-align: center; border: 1rpx solid #e9e9e9; } .confirm { width: 100%; height: 150rpx; border: 1rpx solid transparent; background-color: #fff; } .weui-btn { position: fixed; width: 95%; bottom: 52rpx; left: 50%; transform: translateX(-50%); } .orderContainer { display: flex; flex-direction: row; justify-content: space-around; align-items: center; background-color: #fff; width: 100%; height: 125rpx; } .block { font-size: 13px; width: 200rpx; height: 50rpx; line-height: 50rpx; text-align: center; border: 1rpx solid #e9e9e9; } .search { position: fixed; bottom: 80rpx; background-color: #fff; right: 25rpx; width: 150rpx; height: 75rpx; line-height: 75rpx; text-align: center; border-radius: 35rpx; box-shadow: 1rpx 1rpx 7rpx 7rpx #f5f5f5; } .search image { width: 30rpx; height: 30rpx; } .search text { font-size: 15px; padding-left: 9rpx; color: #666666; } .listContainer { width: 100%; height: 100%; margin-top: 80rpx; }
js
import category from '../../api/employ' import jobList from '../../api/detail' Page({ data: { curIndex: '', isActive: false, jobList:[], cur: [], job: [], isShow: true, status: 0, isMask: false, isSelect: false, city: ['全國', '杭州', '北京', '深圳', '上海', '廣州', '武漢', '重慶'] }, changeStatus(e) { let status = e.currentTarget.dataset.status; let cur = category; this.setData({ isActive: !this.data.isActive, status: status, isMask: !this.data.isMask, cur: cur, }) }, select(e) { let curIndex = e.currentTarget.dataset.index; this.setData({ isSelect: " curIndex == this.data.curIndex ? '!this.data.isActive' : 'true' ", isActive: false, isMask:false, curIndex: curIndex, }) }, multiSelect(e){ let multiIndex=e.currentTarget.dataset.index; this.setData({ isSelect:!this.data.isSelect, curIndex:multiIndex }) }, search(e) { wx.navigateTo({ url: '../search/search', }) }, onLoad: function (e) { this.setData({ jobList:jobList }) }, click:function (e) { let id =e.currentTarget.dataset.id; wx.navigateTo({ url: `../detail/detail?id=${id}`, }) } })
關(guān)于“微信小程序如何實現(xiàn)彈出菜單功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。