亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

小程序自定義單頁(yè)面、全局導(dǎo)航欄的實(shí)現(xiàn)代碼

 更新時(shí)間:2019年03月15日 10:28:46   作者:小白  
這篇文章主要介紹了小程序自定義單頁(yè)面、全局導(dǎo)航欄的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

需求

產(chǎn)品說小程序返回到首頁(yè)不太方便,想添加返回首頁(yè)按鈕,UI說導(dǎo)航欄能不能設(shè)置背景圖片,因?yàn)槟菢釉O(shè)計(jì)挺好看的。

需求分析并制定方案

這產(chǎn)品和UI都提需求了,咱也不能反駁哈,所以開始調(diào)研,分析可行性方案;1、可以添加懸浮按鈕。2、自定義導(dǎo)航欄。
添加懸浮按鈕,是看起來是比較簡(jiǎn)單哈,但是感覺不太優(yōu)雅,會(huì)占據(jù)頁(yè)面的空間,體驗(yàn)也不太好。所以想了下第二種方案,自定義導(dǎo)航欄既可以實(shí)現(xiàn)產(chǎn)品的需求還可以滿足UI的設(shè)計(jì)美感,在頂部空白處加上返回首頁(yè)的按鈕,這樣和返回按鈕還對(duì)稱(最終如圖所示,頂部導(dǎo)航欄是個(gè)背景圖片,分兩塊組合起來)。

實(shí)現(xiàn)方案

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

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

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

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

先說下兩種配置方法:

①全局配置navigationStyle:

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

微信客戶端>=6.6.0

app.json

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

②單頁(yè)面配置navigationStyle

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

微信客戶端版本>=7.0.0

自定義的頁(yè)面.json

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

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

以下說下幾個(gè)要點(diǎn):

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

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

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

4、因?yàn)樽远x導(dǎo)航欄每個(gè)頁(yè)面都要寫,所以把導(dǎo)航欄封裝了公共組件,這樣只需要在每個(gè)頁(yè)面引入即可。

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

wxml

<view class="navbar" style="{{'height: ' + navigationBarHeight}}">
 <view style="{{'height: ' + statusBarHeight}}"></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 style="{{'height: ' + navigationBarHeight}};background: white;"></view>
這里有個(gè)需注意的問題,就是一般會(huì)出現(xiàn)自定義導(dǎo)航欄,下拉頁(yè)面,導(dǎo)航欄也隨著會(huì)下拉,這種問題是因?yàn)樵O(shè)置fixed后頁(yè)面元素整體上移了navigationBarHeight,所以在此組件里設(shè)置一個(gè)空白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)前用戶的微信版本,做下版本比較,如果小于這個(gè)版本,設(shè)置個(gè)全局變量,也可以在組件寫個(gè)方法,在不同的頁(yè)面打開顯示不同的頂部導(dǎo)航欄,或者可以控制是否顯示導(dǎo)航欄,這里就不詳細(xì)說了。

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

總結(jié)

小程序開發(fā)是有些坑的地方,從不支持自定義導(dǎo)航欄,到支持全局自定義導(dǎo)航欄,再到現(xiàn)在的支持單頁(yè)面配置,可以看出在慢慢完善。還有底部tabbar,可自己選擇配置的太少了,雖然也支持自定義,但是發(fā)現(xiàn)自定義寫的底部導(dǎo)航組件體驗(yàn)并不好,每次打開頁(yè)面都會(huì)重新渲染底部的按鈕,如果全部寫成在一個(gè)頁(yè)面里的tab切換,雖然按鈕每次不用重新加載了,但是業(yè)務(wù)多肯定不行,寫到一個(gè)單頁(yè)面里東西也太多了。 希望微信能夠多添加或放開一些功能,讓開發(fā)者更好的服務(wù)于產(chǎn)品,給用戶更好的體驗(yàn)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)2048小游戲的詳細(xì)過程

    微信小程序?qū)崿F(xiàn)2048小游戲的詳細(xì)過程

    這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)2048小游戲的相關(guān)資料,文中將實(shí)現(xiàn)的代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • JS彈出居中的DIV的代碼

    JS彈出居中的DIV的代碼

    一直都在想怎么樣使彈出的DIV能在任何時(shí)候都是居中顯示的,剛開始的時(shí)候是用CSS樣式直接定義好層的位置,但是當(dāng)頁(yè)面很長(zhǎng)的時(shí)候,或是瀏覽器窗口大小不是固定的時(shí)候就不能正確的顯示,所以只好用JS來控制DIV的顯示位置。
    2008-06-06
  • Bootstrap框架的學(xué)習(xí)教程詳解(二)

    Bootstrap框架的學(xué)習(xí)教程詳解(二)

    Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。本文給大家介紹Bootstrap框架的學(xué)習(xí)教程詳解,對(duì)bootstrap框架感興趣的朋友跟著小編一起學(xué)習(xí)吧
    2016-10-10
  • JS實(shí)現(xiàn)隨機(jī)顏色的3種方法與顏色格式的轉(zhuǎn)化

    JS實(shí)現(xiàn)隨機(jī)顏色的3種方法與顏色格式的轉(zhuǎn)化

    隨機(jī)顏色和顏色格式是我們?cè)陂_發(fā)中經(jīng)常要用到的一個(gè)小功能,網(wǎng)上相關(guān)的資料也很多,想著有必要總結(jié)一下自己的經(jīng)驗(yàn)。所以這篇文章主要介紹了JS實(shí)現(xiàn)隨機(jī)顏色的3種方法與顏色格式的轉(zhuǎn)化,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • javascript實(shí)現(xiàn)下拉提示選擇框

    javascript實(shí)現(xiàn)下拉提示選擇框

    這篇文章主要介紹了javascript實(shí)現(xiàn)下拉提示選擇框的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • Three.js GLTF模型加載實(shí)現(xiàn)示例詳解

    Three.js GLTF模型加載實(shí)現(xiàn)示例詳解

    這篇文章主要為大家介紹了Three.js GLTF模型加載實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • JavaScript封閉函數(shù)及常用內(nèi)置對(duì)象示例

    JavaScript封閉函數(shù)及常用內(nèi)置對(duì)象示例

    這篇文章主要介紹了JavaScript封閉函數(shù)及常用內(nèi)置對(duì)象,結(jié)合實(shí)例形式分析了JavaScript封閉函數(shù)及常用內(nèi)置對(duì)象的定義與簡(jiǎn)單使用相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • JS實(shí)現(xiàn)同一DOM元素上onClick事件與onDblClick事件并存的解決方法

    JS實(shí)現(xiàn)同一DOM元素上onClick事件與onDblClick事件并存的解決方法

    這篇文章主要介紹了JS實(shí)現(xiàn)同一DOM元素上onClick事件與onDblClick事件并存的解決方法,結(jié)合實(shí)例形式分析了javascript通過針對(duì)單擊onclick事件增加定時(shí)器進(jìn)行onClick事件與onDblClick事件的區(qū)別判定操作,需要的朋友可以參考下
    2018-06-06
  • 原生JS實(shí)現(xiàn)的簡(jiǎn)單小鐘表功能示例

    原生JS實(shí)現(xiàn)的簡(jiǎn)單小鐘表功能示例

    這篇文章主要介紹了原生JS實(shí)現(xiàn)的簡(jiǎn)單小鐘表功能,涉及javascript結(jié)合定時(shí)器的數(shù)值運(yùn)算與頁(yè)面元素屬性動(dòng)態(tài)修改相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • javascript中動(dòng)態(tài)加載js文件多種解決辦法總結(jié)

    javascript中動(dòng)態(tài)加載js文件多種解決辦法總結(jié)

    這篇文章主要介紹了javascript中動(dòng)態(tài)加載js文件多種解決辦法,有需要的朋友可以參考一下
    2013-11-11

最新評(píng)論