如何在小程序中自定義單頁面

本篇文章為大家展示了如何在小程序中自定義單頁面,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)專注于渾源企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。渾源網(wǎng)站建設(shè)公司,為渾源等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

一、實現(xiàn)的前提

1、首先查看文檔,看文檔里關(guān)于自定義導(dǎo)航欄是怎么規(guī)定的,有哪些限制;還有小程序自定義導(dǎo)航欄全局配置和單頁面配置的微信版本和調(diào)試庫的最低支持版本。

2、在app.json window 增加 navigationStyle:custom ,頂部導(dǎo)航欄就會消失,只保留右上角膠囊狀的按鈕,如何修改膠囊的顏色呢;膠囊體目前只支持黑色和白色兩種顏色 在app.josn window 加上 "navigationBarTextStyle":"white/black"

3、還要考慮加返回按鈕和返回首頁的按鈕,適配不同的機(jī)型

先說下兩種配置方法:

①全局配置navigationStyle:

調(diào)試基礎(chǔ)庫>=1.9.0

微信客戶端>=6.6.0

app.json

{
 "usingComponents": {
  "navigationBar": "/components/navigationBar/navigationBar"
 },
 "window": {
  "navigationStyle": "custom"
 } 
}

②單頁面配置navigationStyle

調(diào)試基礎(chǔ)庫>=2.4.3

微信客戶端版本>=7.0.0

自定義的頁面.json

{
 "window": {
  "navigationStyle": "default"
 } 
}
{
 "navigationStyle": "custom",
 "usingComponents": {
  "navigationBar": "/components/navigationBar/navigationBar"
 }
}
兩者的區(qū)別就是,全局配置放在app.json文件里,單頁面配置放在自定義頁面配置文件里。

二、實現(xiàn)的步驟

以下說下幾個要點:

1、自定義導(dǎo)航欄文本,是否顯示返回,是否顯示返回首頁,導(dǎo)航欄高度

2、statusBarHeight,用來獲取手機(jī)狀態(tài)欄的高度,這個需要在全局app.js中的onLaunch,調(diào)用wx.getSystemInfo獲取,navigationBarHeight+默認(rèn)的高度,這個是設(shè)定整個導(dǎo)航欄的高度,

3、還有注意的,在寫樣式距離和大小時建議都用px,因小程序右邊的膠囊也是用的px,不是rpx。

4、因為自定義導(dǎo)航欄每個頁面都要寫,所以把導(dǎo)航欄封裝了公共組件,這樣只需要在每個頁面引入即可。

如下是封裝的導(dǎo)航欄組件:

wxml

<view class="navbar" >
 <view ></view>
 <view class='title-container'>
  <view class='capsule' wx:if="{{ back || home }}">
   <view bindtap='back' wx:if="{{back}}">
    <image src='/images/back.png'></image>     
   </view>
   <view bindtap='backHome' wx:if="{{home}}">
    <image src='/images/home.png'></image>
   </view>
  </view>
  <view class='title'>{{text}}</view>
 </view>
</view>
<view ></view>
這里有個需注意的問題,就是一般會出現(xiàn)自定義導(dǎo)航欄,下拉頁面,導(dǎo)航欄也隨著會下拉,這種問題是因為設(shè)置fixed后頁面元素整體上移了navigationBarHeight,所以在此組件里設(shè)置一個空白view元素占用最上面的navigationBarHeight這塊高度

wxss

.navbar {
 width: 100%;
 background-color: #1797eb;
 position: fixed;
 top: 0;
 left: 0;
 z-index: 999;
}
.title-container {
 height: 40px;
 display: flex;
 align-items: center;
 position: relative;
}
.capsule {
 margin-left: 10px;
 height: 30px;
 background: rgba(255, 255, 255, 0.6);
 border: 1px solid #fff;
 border-radius: 16px;
 display: flex;
 align-items: center;
}
.capsule > view {
 width: 45px;
 height: 60%;
 position: relative;
.capsule > view:nth-child(2) {
 border-left: 1px solid #fff; 
}
.capsule image {
 width: 50%;
 height: 100%;
 position: absolute;
 left: 50%;
 top: 50%;
 transform: translate(-50%,-50%);
}
.title {
 color: white;
 position: absolute;
 top: 6px;
 left: 104px;
 right: 104px;
 height: 30px;
 line-height: 30px;
 font-size: 14px;
 text-align: center;
 overflow: hidden;
 text-overflow: ellipsis;
 white-space: nowrap;
}

js

const app = getApp()

Component({

 properties: {
  text: {
   type: String,
   value: 'Wechat'
  },
  back: {
   type: Boolean,
   value: false
  },
  home: {
   type: Boolean,
   value: false
  }
 },
 data: {
  statusBarHeight: app.globalData.statusBarHeight + 'px',
  navigationBarHeight: (app.globalData.statusBarHeight + 44) + 'px'
 },

 methods: {
  backHome: function () {
   let pages = getCurrentPages()
   wx.navigateBack({
    delta: pages.length
   })
  },
  back: function () {
   wx.navigateBack({
    delta: 1
   })
  }
 }
})

json

{
 "component": true,
 "usingComponents": {}
}
最終還需要考慮下版本兼容的問題,畢竟還有一些用戶,微信版本并沒有更新到最新版本。

首先可以在app.js里面獲取下當(dāng)前用戶的微信版本,做下版本比較,如果小于這個版本,設(shè)置個全局變量,也可以在組件寫個方法,在不同的頁面打開顯示不同的頂部導(dǎo)航欄,或者可以控制是否顯示導(dǎo)航欄,這里就不詳細(xì)說了。

親自試了下,在低于7.0版本的微信中,如果采用單頁面自定義導(dǎo)航欄,會出現(xiàn)兩個導(dǎo)航欄,這時候通過判斷版本號不要再渲染自定義的導(dǎo)航欄組件了,在頁面的配置文件里寫上title名,還有相應(yīng)的背景色,這樣就會顯示自帶的導(dǎo)航欄了。

上述內(nèi)容就是如何在小程序中自定義單頁面,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文標(biāo)題:如何在小程序中自定義單頁面
文章鏈接:http://muchs.cn/article18/picpdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、品牌網(wǎng)站設(shè)計網(wǎng)站策劃、全網(wǎng)營銷推廣關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)