微信小程序tabBar自定義彈窗遮擋不住解決技巧
背景
最近開發(fā)微信小程序發(fā)現(xiàn)一個問題,就是微信小程序官方自帶的tabbar層級很高,自定義modal蓋不住tabbar的問題;翻閱官方的社區(qū),很多同學(xué)說 設(shè)置z-index:99999;可以解決這個問題,我實(shí)踐下來是有問題的;ios是解決不了問題;經(jīng)過反復(fù)實(shí)踐有兩種方法可以解決問題;
方法一:自定義tabbar
這個方法就是完全放棄微信官方的tabbar;自己用SPA的方式去實(shí)現(xiàn)一個tabbar; 這個方法的優(yōu)點(diǎn):
- tabbar能自己定制化;順手也解決了蓋不住的問題;
缺點(diǎn)在于: - 要自己實(shí)現(xiàn)微信官方的實(shí)現(xiàn)的功能比如wx.switchTab等基礎(chǔ)功能
- 需要自己實(shí)現(xiàn)路由管理
- 需要比較大測試成本
整體實(shí)現(xiàn)成本還是比較大的,具體實(shí)現(xiàn)方法這里不做演示,感興趣的可以自行找相關(guān)的文章;社區(qū)有許多這個文章。
方法二:套用原生提供的tabbar自定義功能,嵌套自己的tabbar組件
具體實(shí)現(xiàn)方法如下:
第一步:開啟原生的自定義tabbar功能:
// app.json加入以下代碼 "tabBar": { "custom": true, "list": [ { "pagePath": "pages/index/index", "text": "首頁" }, { "pagePath": "pages/account/index", "text": "我的" } ] },
第二步:在根目錄創(chuàng)建空的tabbar
// custom-tab-bar/index.js // custom-tab-bar/index.json // custom-tab-bar/index.wxml // custom-tab-bar/index.wxss // index.wxml <view></view> // index.js Component({}); // index.json { "component": true }
第三步:創(chuàng)建件自己的tabbar組件
// wxml <view class="tab-bar__block"></view> <view class="tab-bar"> <view class="tab-bar__item {{ index == selected ? 'tab-bar__active' : '' }}" wx:for="{{list}}" wx:key="index" bind:tap="handleClick" data-index="{{ index }}" data-path="{{ item.pagePath }}"> <icon icon="{{ index == selected ? item.currentIcon : item.icon }}" size="28px" /> <view class="tab-bar__text">{{ item.text }}</view> </view> </view> // js methods: { /** * 點(diǎn)擊tab 切換 * @param e event */ handleClick(e: WechatMiniprogram.CustomEvent) { const { path, index } = e.currentTarget.dataset; const { list } = this.data; wx.switchTab({ url: path, }); },
第四步:使用頁面正常使用自己的tabbar組件
// wxml <tab-bar selected="{{0}}" /> // json { "usingComponents": { "tab-bar": "../../components/business/tab-bar" } }
解決問題方法大致思路就是這些,
方法的優(yōu)點(diǎn)是:能比較快速的解決遮擋不住的問題;且支持原生小程序tabbar的大部分功能 方法的缺點(diǎn)是:
- page 生命周期 onTabItemTap 不可以觸發(fā),需要自己實(shí)現(xiàn)
- Icon 第一次切換會閃一下
總結(jié)
方法二相比方法一來說;實(shí)現(xiàn)成本低的多,適合時間緊任務(wù)重的時候作為臨時的解決方案,但是,總體來說還是比較hack的一種方式,如果有時間的話可以自己實(shí)現(xiàn)tabbar為上上策;順便吐槽一下,為啥官方社區(qū)都是說用z-index解決,可是明顯不行啊
成果
以上就是微信小程序tabBar自定義彈窗擋不住解決技巧的詳細(xì)內(nèi)容,更多關(guān)于微信小程序tabBar彈窗的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript canvas實(shí)現(xiàn)俄羅斯方塊游戲
這篇文章主要為大家詳細(xì)介紹了JavaScript canvas實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07分享12個Webpack中常用的Loader(小結(jié))
這篇文章主要介紹了分享12個Webpack中常用的Loader(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03基于JS實(shí)現(xiàn)9種不同的面包屑和分布式多步驟導(dǎo)航效果
本文是小編給大家分享的基于js實(shí)現(xiàn)的9種不同風(fēng)格的面包屑和分布式多步驟導(dǎo)航效果,非常不錯,具有參考借鑒價值,需要的朋友參考下2017-02-02js實(shí)現(xiàn)適用于素材網(wǎng)站的黑色多級菜單導(dǎo)航條效果
這篇文章主要介紹了js實(shí)現(xiàn)適用于素材網(wǎng)站的黑色多級菜單導(dǎo)航條效果,涉及javascript鼠標(biāo)事件及頁面元素樣式的動態(tài)切換技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08小程序自定義tabbar導(dǎo)航欄及動態(tài)控制tabbar功能實(shí)現(xiàn)方法(uniapp)
在項目中遇到一個需求,根據(jù)不同的賬號,生成不同的tabBar,下面這篇文章主要給大家介紹了關(guān)于小程序自定義tabbar導(dǎo)航欄及動態(tài)控制tabbar功能實(shí)現(xiàn)方法(uniapp)的相關(guān)資料,需要的朋友可以參考下2022-12-12js中關(guān)于require與import的區(qū)別及說明
這篇文章主要介紹了js中關(guān)于require與import的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10