国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

小程序自定義導航欄(適配所有手機)

jayzou / 3443人閱讀

摘要:背景在做小程序時,關于默認導航欄,我們遇到了以下的問題手機對于頁面的展示不一致,安卓的顯示不居中頁面的只支持純文本級別的樣式控制,不能夠做更豐富的效果左上角的事件無法監(jiān)聽定制路由導航單一,只能夠返回上一頁,深層級頁面的返回不夠友好探索小程序

背景

在做小程序時,關于默認導航欄,我們遇到了以下的問題:

Android、IOS手機對于頁面title的展示不一致,安卓title的顯示不居中

頁面的title只支持純文本級別的樣式控制,不能夠做更豐富的title效果

左上角的事件無法監(jiān)聽、定制

路由導航單一,只能夠返回上一頁,深層級頁面的返回不夠友好

探索

小程序自定義導航欄已開放許久>>了解一下,相信不少小伙伴已使用過這個功能,同時不少小伙伴也會發(fā)現一些坑:

機型多如牛毛:自定義導航欄高度在不同機型始終無法達到視覺上的統(tǒng)一

調皮的膠囊按鈕:導航欄元素(文字,圖標等)怎么也對不齊那該死的膠囊按鈕

各種尺寸的全面屏,奇怪的劉海屏,簡直要抓狂

一探究竟

為了搞明白原理,我先去翻了官方文檔,>>飛機,點過去是不是很驚喜,很意外,通篇大文盡然只有最下方的一張圖片與這個問題有關,并且啥也看不清,汗汗汗...

我特意找了一張圖片來

分析上圖,我得到如下信息:

Android跟iOS有差異,表現在頂部到膠囊按鈕之間的距離差了6pt

膠囊按鈕高度為32pt, iOS和Android一致

動手分析

我們寫一個狀態(tài)欄,通過wx.getSystemInfoSync().statusBarHeight設置高度

Android:

iOS:

可以看出,iOS膠囊按鈕與狀態(tài)欄之間距離為:4px, Android為8px,是不是所有手機都是這種情況呢?
答案是:蘋果手機確實都是4px,安卓大部分都是7和8 也會有其他的情況(可以自己打印getSystemInfo驗證)如何快速便捷算出這個高度,請接著往下看
如何計算

導航欄分為狀態(tài)欄和標題欄,只要能算出每臺手機的導航欄高度問題就迎刃而解

導航欄高度 = 膠囊按鈕高度 + 狀態(tài)欄到膠囊按鈕間距 * 2 + 狀態(tài)欄高度

注:由于膠囊按鈕是原生組件,為表現一致,其單位在各種手機中都為px,所以我們自定義導航欄的單位都必需是px(切記不能用rpx),才能完美適配。
解決問題

現在我們明白了原理,可以利用膠囊按鈕的位置信息和statusBarHeight高度動態(tài)計算導航欄的高度,貼一個實現此功能最重要的方法

let systemInfo = wx.getSystemInfoSync();
let rect = Taro.getMenuButtonBoundingClientRect ? Taro.getMenuButtonBoundingClientRect() : null; //膠囊按鈕位置信息
    Taro.getMenuButtonBoundingClientRect();
    let navBarHeight = (function() { //導航欄高度
            let gap = rect.top - systemInfo.statusBarHeight; //動態(tài)計算每臺手機狀態(tài)欄到膠囊按鈕間距
            return 2 * gap + rect.height;
          })();

gap信息就是不同的手機其狀態(tài)欄到膠囊按鈕間距,具體更多代碼實現和使用demo請移步下方代碼倉庫,代碼中還會有輸入框文字跳動解決辦法,安卓手機輸入框文字飛出解決辦法,左側按鈕邊框太粗解決辦法等等

吐槽

這么重要的問題,官方盡然沒有提供解決方案...竟然提供了一張看不清的圖片???

網上有很多ios設置44,android設置48,還有根據不同的手機型號設置不同高度,通過長時間的開發(fā)和嘗試,本人發(fā)現以上方案并不完美,并且bug很多
代碼庫

Taro組件gitHub地址詳細用法請參考README

原生組件npm構建版本gitHub地址詳細用法請參考README

原生組件簡易版gitHub地址詳細用法請參考README

由于本人精力有限,目前只計劃發(fā)布維護好這2種組件,其他組件請自行修改代碼,有問題請聯系

備注

上方2種組件在最下方30多款手機測試情況表現良好

iPhone手機打電話和開熱點導致導航欄樣式錯亂,問題已經解決啦,請去demo里測試,這里特別感謝moments網友提出的問題

本文章并無任何商業(yè)性質,如有侵權請聯系本人修改或刪除

文章少量部分內容是本人查詢搜集而來

如有問題可以下方留言討論,微信zhijunxh

比較

斗魚:

虎牙:

微博:

酷狗:

知乎:

知乎是這里邊做的最好的,但是我個人認為有幾個可以優(yōu)化的小問題

打電話或者開啟熱點導致樣式錯落,這也是大部門小程序的問題

導航欄下邊距太小,看起來不舒服

搜索框距離2側按鈕組距離不對等

自定義返回和home按鈕中的豎線顏色重了,并且感覺太粗

如果您看到了此篇文章,請趕快修改自己的代碼,并運用在實踐中吧

掃碼體驗我的小程序:

創(chuàng)作不易,如果對你有幫助,請移步Taro組件gitHub原生組件gitHub給個星星 star?? 謝謝
測試信息
手機型號 膠囊位置信息 statusBarHeight 測試情況
iPhoneX 80 32 281 369 48 88 44 通過
iPhone8 plus 56 32 320 408 24 88 20 通過
iphone7 56 32 281 368 24 87 20 通過
iPhone6 plus 56 32 320 408 24 88 20 通過
iPhone6 56 32 281 368 24 87 20 通過
HUAWEI SLA-AL00 64 32 254 350 32 96 24 通過
HUAWEI VTR-AL00 64 32 254 350 32 96 24 通過
HUAWEI EVA-AL00 64 32 254 350 32 96 24 通過
HUAWEI EML-AL00 68 32 254 350 36 96 29 通過
HUAWEI VOG-AL00 65 32 254 350 33 96 25 通過
HUAWEI ATU-TL10 64 32 254 350 32 96 24 通過
HUAWEI SMARTISAN OS105 64 32 326 422 32 96 24 通過
XIAOMI MI6 59 28 265 352 31 87 23 通過
XIAOMI MI4LTE 60 32 254 350 28 96 20 通過
XIAOMI MIX3 74 32 287 383 42 96 35 通過
REDMI NOTE3 64 32 254 350 32 96 24 通過
REDMI NOTE4 64 32 254 350 32 96 24 通過
REDMI NOTE3 55 28 255 351 27 96 20 通過
REDMI 5plus 67 32 287 383 35 96 28 通過
MEIZU M571C 65 32 254 350 33 96 25 通過
MEIZU M6 NOTE 62 32 254 350 30 96 22 通過
MEIZU MX4 PRO 62 32 278 374 30 96 22 通過
OPPO A33 65 32 254 350 33 96 26 通過
OPPO R11 58 32 254 350 26 96 18 通過
VIVO Y55 64 32 254 350 32 96 24 通過
HONOR BLN-AL20 64 32 254 350 32 96 24 通過
HONOR NEM-AL10 59 28 265 352 31 87 24 通過
HONOR BND-AL10 64 32 254 350 32 96 24 通過
HONOR duk-al20 64 32 254 350 32 96 24 通過
SAMSUNG SM-G9550 64 32 305 401 32 96 24 通過
360 1801-A01 64 32 254 350 32 96 24 通過

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/116285.html

相關文章

  • 程序定義導航適配所有手機

    摘要:背景在做小程序時,關于默認導航欄,我們遇到了以下的問題手機對于頁面的展示不一致,安卓的顯示不居中頁面的只支持純文本級別的樣式控制,不能夠做更豐富的效果左上角的事件無法監(jiān)聽定制路由導航單一,只能夠返回上一頁,深層級頁面的返回不夠友好探索小程序 背景 在做小程序時,關于默認導航欄,我們遇到了以下的問題: Android、IOS手機對于頁面title的展示不一致,安卓title的顯示不居中...

    Yu_Huang 評論0 收藏0
  • Win10應用設計的那些事兒

    摘要:如何挑選合適的導航結構導航設計是應用設計的關鍵,設計規(guī)范以下簡稱規(guī)范中將導航元素分為對等層次和歷史導航等幾類,例如表和透視表導航窗格是對等導航元素,中心大綱細節(jié)屬于分層導航元素,返回則屬于歷史導航元素。 此文已由作者楊凱明授權網易云社區(qū)發(fā)布。 歡迎訪問網易云社區(qū),了解更多網易技術產品運營經驗。 繼Windows 10系統(tǒng)發(fā)布之后,很多Windows用戶更新了系統(tǒng)。win10系統(tǒng)的發(fā)布,...

    ad6623 評論0 收藏0
  • 移動前端 - 收藏集 - 掘金

    摘要:使用移動設備查看頁面時會發(fā)現,在微信瀏覽器中有頂部導航欄有效解決圖片使用單位邊角缺失的問題前端掘金起因在移動端使用布局時圖片也需要用單位。移動端實踐前端掘金說起,相信大家并不陌生。 Sticky Footer,完美的絕對底部 - 前端 - 掘金寫在前面 做過網頁開發(fā)的同學想必都遇到過這樣尷尬的排版問題:在主體內容不足夠多或者未完全加載出來之前,就會導致出現(圖一)的這種情況,原因是因為...

    Jochen 評論0 收藏0

發(fā)表評論

0條評論

jayzou

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<