微信小程序tabBar自定義彈窗遮擋不住解決技巧
背景
最近開(kāi)發(fā)微信小程序發(fā)現(xiàn)一個(gè)問(wèn)題,就是微信小程序官方自帶的tabbar層級(jí)很高,自定義modal蓋不住tabbar的問(wèn)題;翻閱官方的社區(qū),很多同學(xué)說(shuō) 設(shè)置z-index:99999;可以解決這個(gè)問(wèn)題,我實(shí)踐下來(lái)是有問(wèn)題的;ios是解決不了問(wèn)題;經(jīng)過(guò)反復(fù)實(shí)踐有兩種方法可以解決問(wèn)題;
方法一:自定義tabbar
這個(gè)方法就是完全放棄微信官方的tabbar;自己用SPA的方式去實(shí)現(xiàn)一個(gè)tabbar; 這個(gè)方法的優(yōu)點(diǎn):
- tabbar能自己定制化;順手也解決了蓋不住的問(wèn)題;
缺點(diǎn)在于: - 要自己實(shí)現(xiàn)微信官方的實(shí)現(xiàn)的功能比如wx.switchTab等基礎(chǔ)功能
- 需要自己實(shí)現(xiàn)路由管理
- 需要比較大測(cè)試成本
整體實(shí)現(xiàn)成本還是比較大的,具體實(shí)現(xiàn)方法這里不做演示,感興趣的可以自行找相關(guān)的文章;社區(qū)有許多這個(gè)文章。
方法二:套用原生提供的tabbar自定義功能,嵌套自己的tabbar組件
具體實(shí)現(xiàn)方法如下:
第一步:開(kāi)啟原生的自定義tabbar功能:
// app.json加入以下代碼
"tabBar": {
"custom": true,
"list": [
{
"pagePath": "pages/index/index",
"text": "首頁(yè)"
},
{
"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,
});
},
第四步:使用頁(yè)面正常使用自己的tabbar組件
// wxml
<tab-bar selected="{{0}}" />
// json
{
"usingComponents": {
"tab-bar": "../../components/business/tab-bar"
}
}
解決問(wèn)題方法大致思路就是這些,
方法的優(yōu)點(diǎn)是:能比較快速的解決遮擋不住的問(wèn)題;且支持原生小程序tabbar的大部分功能 方法的缺點(diǎn)是:
- page 生命周期 onTabItemTap 不可以觸發(fā),需要自己實(shí)現(xiàn)
- Icon 第一次切換會(huì)閃一下
總結(jié)
方法二相比方法一來(lái)說(shuō);實(shí)現(xiàn)成本低的多,適合時(shí)間緊任務(wù)重的時(shí)候作為臨時(shí)的解決方案,但是,總體來(lái)說(shuō)還是比較hack的一種方式,如果有時(shí)間的話可以自己實(shí)現(xiàn)tabbar為上上策;順便吐槽一下,為啥官方社區(qū)都是說(shuō)用z-index解決,可是明顯不行啊
成果

以上就是微信小程序tabBar自定義彈窗擋不住解決技巧的詳細(xì)內(nèi)容,更多關(guān)于微信小程序tabBar彈窗的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript canvas實(shí)現(xiàn)俄羅斯方塊游戲
這篇文章主要為大家詳細(xì)介紹了JavaScript canvas實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
JS動(dòng)態(tài)調(diào)用方法名示例介紹
在JS中如何動(dòng)態(tài)調(diào)用方法名,想必很多的朋友們都不會(huì)吧,下面為大家舉例介紹下具體的調(diào)用方法2013-12-12
分享12個(gè)Webpack中常用的Loader(小結(jié))
這篇文章主要介紹了分享12個(gè)Webpack中常用的Loader(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
js省市區(qū)級(jí)聯(lián)查詢(插件版&無(wú)插件版)
這篇文章主要為大家詳細(xì)介紹了js省市區(qū)級(jí)聯(lián)查詢,包括插件版和無(wú)插件版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
基于JS實(shí)現(xiàn)9種不同的面包屑和分布式多步驟導(dǎo)航效果
本文是小編給大家分享的基于js實(shí)現(xiàn)的9種不同風(fēng)格的面包屑和分布式多步驟導(dǎo)航效果,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-02-02
js實(shí)現(xiàn)適用于素材網(wǎng)站的黑色多級(jí)菜單導(dǎo)航條效果
這篇文章主要介紹了js實(shí)現(xiàn)適用于素材網(wǎng)站的黑色多級(jí)菜單導(dǎo)航條效果,涉及javascript鼠標(biāo)事件及頁(yè)面元素樣式的動(dòng)態(tài)切換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
小程序自定義tabbar導(dǎo)航欄及動(dòng)態(tài)控制tabbar功能實(shí)現(xiàn)方法(uniapp)
在項(xiàng)目中遇到一個(gè)需求,根據(jù)不同的賬號(hào),生成不同的tabBar,下面這篇文章主要給大家介紹了關(guān)于小程序自定義tabbar導(dǎo)航欄及動(dòng)態(tài)控制tabbar功能實(shí)現(xiàn)方法(uniapp)的相關(guān)資料,需要的朋友可以參考下2022-12-12
js中關(guān)于require與import的區(qū)別及說(shuō)明
這篇文章主要介紹了js中關(guān)于require與import的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

