MUI-設置沉浸式狀態(tài)欄后MUI導航欄的高度問題

上篇文章實現(xiàn)了沉浸式狀態(tài)欄,如果不使用MUI的導航欄可以不用關心這個問題弥雹。由于我們的項目一開始被大量使用了MUI的導航欄夜畴,所以決定解決這個問題介衔,不然就要對項目做大量的修改,時間成本太高脚翘。
原創(chuàng)文章,歡迎轉載.轉載請注明出處: http://www.reibang.com/p/cb1a732022fd

問題描述與分析

設置了沉浸式狀態(tài)欄之后灼卢,使用mui.openWindow()跳轉時隱藏原生導航欄,在目標頁面中加入MUI的導航欄来农,目標頁面代碼和界面效果如下:

<!doctype html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <link href="css/mui.min.css" rel="stylesheet" />
    </head>

    <body>
        <header class="mui-bar mui-bar-nav">
            <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
            <h1 class="mui-title">標題</h1>
        </header>
        <script src="js/mui.min.js"></script>
        <script type="text/javascript">
            mui.init()
        </script>
    </body>

</html>
界面效果

如上圖所示鞋真,MUI的導航欄高度只剩下44,看mui.css源碼可知:MUI將導航欄的高度沃于、頁面包含導航欄后某些樣式的上間距都默認指定為了44涩咖。

解決方案

解決方案就是重寫MUI的樣式,將44的地方改為64繁莹;然后在mui.min.js中對iPhone X系列手機進行適配(iPhone X系列手機的導航欄高度88檩互,單純的把樣式改為64是不行的)。

重寫MUI樣式

在mui.min.css文件末尾加入如下代碼:

/*重寫MUI 
 *解決沉寖式狀態(tài)欄導致導航欄高度少20px的問題*/
.mui-bar-nav {
    height: 64px;
    padding-top: 20px;
}

.mui-bar-nav ~ .mui-content
{
    padding-top: 64px;
}

.mui-bar-nav ~ .mui-content .mui-pull-top-pocket
{
    top: 64px;
}

.mui-bar-nav ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical
{
    top: 64px;
}

.mui-bar-nav ~ .mui-content .mui-slider.mui-fullscreen
{
    top: 64px;
}

注意:工程中一般引入mui.min.css和mui.min.js文件咨演,min表示壓縮過的文件(剔除了多余的字符)闸昨;mui.css和mui.js是提供給開發(fā)者閱讀的。

也可以不重寫MUI薄风,只需要給body添加mui-plus饵较、mui-statusbar 和mui-statusbar-offset樣式(這里是類選擇器):

<body class="mui-plus mui-statusbar mui-statusbar-offset">

MUI考慮到了沉浸式對導航欄的影響,MUI實現(xiàn)的源碼如下:

.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav
{
    height: 64px;
    padding-top: 20px;
}
.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav ~ .mui-content
{
    padding-top: 64px;
}
.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-nav ~ .mui-content .mui-pull-top-pocket
{
    top: 64px;
}
.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-header-secondary
{
    top: 64px;
}
.mui-plus.mui-statusbar.mui-statusbar-offset .mui-bar-header-secondary ~ .mui-content
{
    padding-top: 94px;
}

注意:上面的 .mui-bar-header-secondary 表示第二個導航欄的樣式遭赂,我們的重寫只考慮一個導航欄的情況循诉。
但是這種方式,依然避免不了要對iPhone X系列手機做適配撇他,并且需要對每個用到MUI導航欄的html文件做修改(給body加樣式)茄猫,這違背了我們的初衷。這里只是提一下逆粹,是否使用要根據(jù)項目的實際情況決定募疮。

適配iPhone X系列手機

在mui.min.js文件末尾加入如下代碼:

/**
 * 適配iPhone X 系列手機的導航欄(包括狀態(tài)欄)
 */
mui.plusReady(function(){
    if(plus.navigator.isImmersedStatusbar() && isIPhoneX()){
        //.mui-bar-nav
        var nav = document.querySelector(".mui-bar-nav");
        if(nav){
            nav.style.cssText="height:88px; padding-top: 44px;";
        } else {
            return;
        }
        //.mui-bar-nav ~ .mui-content
        var content = document.querySelector(".mui-content");
        if (content) {
            content.style.paddingTop = "88px";
        } else {
            return;
        }
        //.mui-bar-nav ~ .mui-content .mui-pull-top-pocket
        var pullTopPocket_Arr = content.querySelectorAll(".mui-pull-top-pocket");
        if (pullTopPocket_Arr) {
            pullTopPocket_Arr.forEach(function(value){
                value.style.top = "88px";
            });
        }
        //.mui-bar-nav ~ .mui-content.mui-scroll-wrapper .mui-scrollbar-vertical
        var scrollbarVertical = document.querySelector(".mui-content.mui-scroll-wrapper .mui-scrollbar-vertical");
        if (scrollbarVertical) {
            scrollbarVertical.style.top = "88px";
        }
        //.mui-bar-nav ~ .mui-content .mui-slider.mui-fullscreen
        var slider_fullscreen_Arr = content.querySelectorAll(".mui-content .mui-slider.mui-fullscreen");
        if (slider_fullscreen_Arr) {
            slider_fullscreen_Arr.forEach(function(value){
                value.style.top = "88px";
            });
        }
    }
});

/**
 * 判斷是否為iPhone X 系列機型
 */
function isIPhoneX(){
    if(plus.device.model.indexOf('iPhone') > -1 && screen.height >= 812){
        return true;
    }else{
        return false;
    }
}

效果

根據(jù)上面的解決方案實現(xiàn)后的效果如下:


問題解決后的效果
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市僻弹,隨后出現(xiàn)的幾起案子阿浓,更是在濱河造成了極大的恐慌,老刑警劉巖蹋绽,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芭毙,死亡現(xiàn)場離奇詭異筋蓖,居然都是意外死亡,警方通過查閱死者的電腦和手機退敦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門粘咖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人侈百,你說我怎么就攤上這事瓮下。” “怎么了钝域?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵讽坏,是天一觀的道長。 經常有香客問我例证,道長路呜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任织咧,我火速辦了婚禮胀葱,結果婚禮上,老公的妹妹穿的比我還像新娘笙蒙。我一直安慰自己抵屿,他們只是感情好,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布捅位。 她就那樣靜靜地躺著晌该,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绿渣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天燕耿,我揣著相機與錄音中符,去河邊找鬼。 笑死誉帅,一個胖子當著我的面吹牛淀散,可吹牛的內容都是我干的。 我是一名探鬼主播蚜锨,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼档插,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亚再?” 一聲冷哼從身側響起郭膛,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氛悬,沒想到半個月后则剃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耘柱,經...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年棍现,在試婚紗的時候發(fā)現(xiàn)自己被綠了调煎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡己肮,死狀恐怖士袄,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情谎僻,我是刑警寧澤娄柳,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站戈稿,受9級特大地震影響西土,放射性物質發(fā)生泄漏。R本人自食惡果不足惜鞍盗,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一需了、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧般甲,春花似錦肋乍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锚烦,卻和暖如春觅闽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涮俄。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工蛉拙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彻亲。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓孕锄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苞尝。 傳聞我的和親對象是個殘疾皇子畸肆,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準宙址。 注意:講述HT...
    kismetajun閱讀 27,513評論 1 45
  • 1轴脐、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,988評論 3 119
  • 有人一直在等待著你, 等待著你的風景如畫, 等待著你的笑靨如花豁辉, 希望那天來臨時令野, 不早不晚, 而你徽级, 剛好遇見气破。
    一朝相伴一夕相牽閱讀 240評論 0 0
  • 老師說好好體驗"問題"。哈哈哈哈餐抢,其實根本就不存在問題现使,那是人類的腦子想出來的,制造出來的旷痕。 好好體會 什么是低能...
    吉吉耳閱讀 236評論 0 0
  • 過年期間碳锈,看了很多奇葩說,寫文章也不自覺想到奇葩說里面的奇葩體欺抗,喜歡用人的對比來論證售碳,過年這段時間,又遇到了...
    全能lady云飛閱讀 134評論 0 0