知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 小程序相關(guān) >
小程序自定義導(dǎo)航欄中使用粘性布局無(wú)效的解決辦法
發(fā)表時(shí)間:2021-1-4
發(fā)布人:葵宇科技
瀏覽次數(shù):259
最近公司在做一個(gè)類似購(gòu)物商城的小程序項(xiàng)目,那就不免要自定義導(dǎo)航欄,但是我發(fā)現(xiàn)了一個(gè)問(wèn)題,就是在使用自定義導(dǎo)航欄的頁(yè)面中再次使用粘性布局是混亂的,它會(huì)粘在屏幕的最上面,這樣就會(huì)覆蓋導(dǎo)航欄的內(nèi)容。
如果需要自定義導(dǎo)航欄并且適配所有手機(jī)型號(hào)就得知道導(dǎo)航欄的高度,而導(dǎo)航欄的高度是由手機(jī)設(shè)備狀態(tài)欄的高度、膠囊的高度、膠囊距離狀態(tài)欄的上下邊距,這三者之和才是真正的導(dǎo)航欄的高度。
如果你在小程序中自定義了導(dǎo)航欄,這時(shí)候你需要在標(biāo)簽欄中使用粘性布局,不管是使用Vant UI組件庫(kù)中的sticky屬性或者van-sticky組件還是用CSS的position:sticky屬性都無(wú)法達(dá)到預(yù)期的效果,原因是默認(rèn)將top的值設(shè)置為了0像素,這就需要將top的值設(shè)置為導(dǎo)航欄的高度,先來(lái)看一張圖:
由此可知,導(dǎo)航欄的高度=狀態(tài)欄的高度+膠囊的高度+膠囊的上下邊距 x 2
那么怎么拿到不同型號(hào)手機(jī)的狀態(tài)欄高度和膠囊高度以及膠囊的上下邊距呢?
狀態(tài)欄的高度和膠囊信息可以使用微信自定義的方法wx.getSystemInfo()和wx.getMenuButtonBoundingClientRect()獲取,分別得到如下信息:
由第一張圖可知狀態(tài)欄(statusBarHeight)的高度是44,由第二張圖可知膠囊的高度(height)是32,top是膠囊頂部距離屏幕頂部的距離,那么膠囊距離狀態(tài)欄的上邊距就是top值減去狀態(tài)欄的高度,也就是48 - 44 = 4,那么上下邊距加起來(lái)就是4 x 2 = 8,所以整個(gè)導(dǎo)航欄的高度就是:statusBarHeight + height + (top - statusBarHeight) x 2,即 44 + 32 + ( 48 - 44 ) x 2 = 88px
當(dāng)然不同的手機(jī)型號(hào)會(huì)得到不同的值。
四、具體用法
根據(jù)需求如果需要在多個(gè)頁(yè)面中使用就可以在app.js中調(diào)用以上兩種方法并賦值
//獲取系統(tǒng)信息
wx.getSystemInfo({
success: res => {
this.system = res
}
})
//獲取膠囊信息
this.menu = wx.getMenuButtonBoundingClientRect()
然后在具體某個(gè)頁(yè)面的js文件中獲取值:
//獲取應(yīng)用實(shí)例
const app = getApp();
Page({
data: {
navHeight: ((app.menu.top - app.system.statusBarHeight) * 2 + app.menu.height + app.system.statusBarHeight + 1), //導(dǎo)航欄高度
}
})
之后可以在wxss文件中設(shè)置樣式:
.tabs_title{
position: sticky;
z-index: 99999;
}
top值在wxml中用模板語(yǔ)法綁定:
class="tabs_title" style="top: {{navHeight}}px">
<scroll-view scroll-x="true">
......
scroll-view>
</view>
大功告成,這樣既可以在微信小程序中使用自定義導(dǎo)航欄也可以使用粘性布局了。大家也可以自行封裝組件以備在多個(gè)頁(yè)面中用到或者日后使用。
相關(guān)案例查看更多
相關(guān)閱讀
- 小程序被騙
- 云南省建設(shè)廳網(wǎng)站
- 開(kāi)通微信小程序被騙
- 報(bào)廢車回收管理系統(tǒng)
- 麗江小程序開(kāi)發(fā)
- 云南網(wǎng)站建設(shè)方案 doc
- 云南網(wǎng)站建設(shè)首頁(yè)
- 網(wǎng)站建設(shè)選
- 汽車回收系統(tǒng)
- 出入小程序
- 云南網(wǎng)站建設(shè) 網(wǎng)絡(luò)服務(wù)
- painter
- 云南小程序開(kāi)發(fā)制作公司
- 報(bào)廢車管理系統(tǒng)
- 網(wǎng)站優(yōu)化
- 云南網(wǎng)絡(luò)公司
- web開(kāi)發(fā)技術(shù)
- 貴州小程序開(kāi)發(fā)
- 昆明小程序公司
- 小程序公司
- uniapp開(kāi)發(fā)小程序
- 云南小程序被騙
- 云南軟件設(shè)計(jì)
- 搜索引擎自然排名
- 云南網(wǎng)站建設(shè)外包
- 云南微信小程序開(kāi)發(fā)
- 昆明軟件定制
- 云南網(wǎng)站建設(shè)公司哪家好
- 保山小程序開(kāi)發(fā)
- 搜索排名