微信小程序全屏模式(自定義導(dǎo)航欄)

導(dǎo)航欄背景圖

要自定義導(dǎo)航欄瞳脓,首先需要在app.json里設(shè)置:

{
"window": {
        "navigationStyle": "custom"
    }
}

設(shè)置之后進(jìn)入小程序就只剩下右上角的膠囊了句狼。

在設(shè)置導(dǎo)航欄樣式時需要知道它的高度,在app.jsononLaunch里獲取狀態(tài)欄高度:

App({
    onLaunch: function(options) {
        wx.getSystemInfo({
            success: (res) => {
                this.globalData.statusBarHeight = res.statusBarHeight
                this.globalData.navBarHeight = 44 + res.statusBarHeight
            }
        })
    },
    globalData: {
        statusBarHeight: 0,
        screenHeight: 0
    }
})

44是導(dǎo)航欄除去狀態(tài)欄的高度,單位px褐荷。

因為導(dǎo)航欄每個頁面都會用到,所以我們用組件會方便使用一些嘹悼,這里創(chuàng)建一個叫nav的組件:

首先在組件js里設(shè)置statusBarHeight和一個可以通過外部設(shè)置狀態(tài)欄顏色的backgroundColor的屬性叛甫,默認(rèn)透明。

nav.js:

const app = getApp()
Component({
    options: {
        multipleSlots: true
    },
    properties: {
        backgroundColor:{
            type: String,
            value: 'rgba(0,0,0,0)'
        }
    },
    data: {},
    ready() {
        let {
            statusBarHeight,
            navBarHeight
        } = app.globalData;

        this.setData({
            statusBarHeight,
            navBarHeight
        })
    },
    methods: {
        back() {
            wx.navigateBack({
                delta:1
            })
        }
    }
})

content里放置內(nèi)容杨伙,返回按鈕固定在左邊其监。

nav.wxml:

<view class='nav-wrap' style="background-color:{{bgColor}};">
    <view style="height:{{statusBarHeight}}px;"></view>
    <view class='content'>
        <slot name="content"></slot>
        <view class='back' bindtap='back'></view>
    </view>
</view>

nav.wxss:

.nav-wrap {
    position: fixed;
    top: 0;
    left: 0;
    width: 750rpx;
    z-index: 1;
}

.content {
    position: relative;
    width: 100%;
    height: 44px;
}

.back {
    position: absolute;
    left: 0;
    top: 0;
    width: 88px;
    height: 44px;
    background: pink;
}

在頁面中使用:

<nav bgColor="black">
    <view slot="content">
        <view class='txt'>Nav title</view>
    </view>
</nav>
<view>page content</view>

效果圖:

效果圖

這里txt里的樣式、內(nèi)容都是可以自定義的缀台,如果想要使用通用樣式棠赛,可以寫在組件里。

比如把導(dǎo)航欄title放在組件里,通過外部傳值設(shè)置:

nav.js:

Component({
    // ...
    properties: {
        title:{
            type: String,
            value: ''
        }
    },
    // ...
})

nav.wxml:

<view class='nav-wrap' style="background-color:{{bgColor}};">
    <view style="height:{{statusBarHeight}}px;"></view>
    <view class='content'>
        <view class="title">{{title}}</view>
        <view class='back' bindtap='back'></view>
    </view>
</view>

nav.wxss:

/* ... */
.title {
    color: white;
    text-align: center;
    line-height: 44px;
    font-weight: 500;
}
/* ... */

調(diào)用<nav bgColor="black" title="hello">就可以了睛约。

在第一次使用nav組件的頁面代碼中鼎俘,page content是看不見的,因為是直接從狀態(tài)欄開始顯示的辩涝,被nav擋住了贸伐。

這里可以加一個高度為導(dǎo)航欄高度的view當(dāng)做頂部padding

nav.wxml

<view class='nav-wrap' style="background-color:{{bgColor}};">
    <view style="height:{{statusBarHeight}}px;"></view>
    <view class='content'>
        <view class="title">{{title}}</view>
        <view class='back' bindtap='back'></view>
    </view>
</view>
<view wx:if="{{hastop}}" class='padding' style="width:100;height:{{navBarHeight}}px;"></view>

這里在properties里設(shè)置了一個hastop,用來控制是否有頂部padding怔揩。

頁面中:

<nav bgColor="black" title="Nav title" hastop></nav>
<view>page content</view>

這樣就可以顯示出來了:

導(dǎo)航欄背景圖

還可以做導(dǎo)航欄背景圖捉邢,添加一個image,絕對定位放置在nav-wrap底部:

nav.wxml

<view class='nav-wrap' style="background-color:{{bgColor}};">
    <image class='bgimg' wx:if="{{bgsrc}}" src='{{bgsrc}}' mode='aspectFill'></image>
    <view style="height:{{statusBarHeight}}px;"></view>
    <view class='content'>
        <view class='title'>{{title}}</view>
        <view class='back' bindtap='back'></view>
    </view>
</view>
<view wx:if="{{hastop}}" class='padding' style="width:100;height:{{navBarHeight}}px;"></view>

nav.wxss

.bgimg {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}

頁面:

<nav bgColor="black" title="Nav title" hastop bgsrc="/images/bg.jpeg"></nav>
<view>page content</view>
導(dǎo)航欄背景圖

全屏背景

bgColor商膊、hastop伏伐、bgsrc都去掉,在頁面中放置一個position: fixed;晕拆,并且鋪滿全屏的圖片藐翎。

<nav title="Nav title"></nav>
<image class='pagebg' src='/images/bg.jpeg' mode='aspectFill'></image>
全屏背景

back的內(nèi)容自定義就行了,我這里只是簡單放置了一個色框实幕。

注意事項

官方文檔中的注意事項:

  • 注1:HexColor(十六進(jìn)制顏色值)吝镣,如"#ff00ff"
  • 注2:關(guān)于navigationStyle
    • 客戶端 7.0.0 以下版本,navigationStyle 只在 app.json 中生效昆庇。
    • 客戶端 6.7.2 版本開始末贾,navigationStyle: custom 對 <web-view> 組件無效
    • 開啟 custom 后,低版本客戶端需要做好兼容整吆。開發(fā)者工具基礎(chǔ)庫版本切到 1.7.0(不代表最低版本拱撵,只供調(diào)試用)可方便切到舊視覺
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市掂为,隨后出現(xiàn)的幾起案子裕膀,更是在濱河造成了極大的恐慌,老刑警劉巖勇哗,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昼扛,死亡現(xiàn)場離奇詭異,居然都是意外死亡欲诺,警方通過查閱死者的電腦和手機(jī)抄谐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扰法,“玉大人蛹含,你說我怎么就攤上這事∪洌” “怎么了浦箱?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵吸耿,是天一觀的道長。 經(jīng)常有香客問我酷窥,道長咽安,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任蓬推,我火速辦了婚禮妆棒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沸伏。我一直安慰自己糕珊,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布毅糟。 她就那樣靜靜地躺著红选,像睡著了一般。 火紅的嫁衣襯著肌膚如雪留特。 梳的紋絲不亂的頭發(fā)上纠脾,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機(jī)與錄音蜕青,去河邊找鬼。 笑死糊渊,一個胖子當(dāng)著我的面吹牛右核,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渺绒,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼贺喝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宗兼?” 一聲冷哼從身側(cè)響起躏鱼,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎殷绍,沒想到半個月后染苛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡主到,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年茶行,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片登钥。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡畔师,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出牧牢,到底是詐尸還是另有隱情看锉,我是刑警寧澤姿锭,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站伯铣,受9級特大地震影響呻此,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜懂傀,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一趾诗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蹬蚁,春花似錦恃泪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叽粹,卻和暖如春览效,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虫几。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工锤灿, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辆脸。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓但校,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啡氢。 傳聞我的和親對象是個殘疾皇子状囱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容