亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序自定義頭部導航欄和導航欄背景圖片 navigationStyle問題

2020-03-21 15:50:41
字體:
來源:轉載
供稿:網友

這兩天因為要做一個帶背景的小程序頭,哭了,小程序導航欄有背景也就算了,還得讓導航欄上的背景順下來,心態小崩?,F在可以單獨設置一個頁面的小程序頭了,但是前提是要微信7.0以上的版本,考慮到兼容性問題,還是不要貿然的上了,所以用老版本的替換所有頁面的小程序頭來做。

? 參考了其他篇的文章,但是沒有解決自定義背景的和返回按鈕的顏色的問題,還有因為IOS的橡皮筋效果,對IOS端不太友好,屏幕會亂劃。所以針對性的改動了這些功能,因為才學小程序兩三天,所以其中踩了很多坑,但好在最后效果還是達到了。

下面是效果圖:

微信小程序,導航欄,背景圖片,navigationStyle

原理其實就是通過將原來的頭禁用,然后PAGE自然而然的頂上去以后,定義一個頭的組件,將他設置成fixed布局固定在原來頭的部分,然后給page加上Margin-top,所以還原原來的感覺。背景待會再說。

1.app配置

? 首先禁用所有頭導航,在app.json的window里加一行這個,你會發現所有頭都消失了。然后禁止滑動頁面,滑動問題用scroll-view解決

"window": { "navigationStyle": "custom"}, "disableScroll": true

? 然后在app.js里獲取導航頭的高度的全局數據

// app.jsApp({ globalData: { statusBarHeight: wx.getSystemInfoSync()['statusBarHeight'] }, // 判斷是否由分享進入小程序 if (e.scene == 1007 || e.scene == 1008) {  this.globalData.share = true } else {  this.globalData.share = false } //獲取設備頂部窗口的高度(不同設備窗口高度不一樣,根據這個來設置自定義導航欄的高度) //這個最初我是在組件中獲取,但是出現了一個問題,當第一次進入小程序時導航欄會把 //頁面內容蓋住一部分,當打開調試重新進入時就沒有問題,這個問題弄得我是莫名其妙 //雖然最后解決了,但是花費了不少時間 wx.getSystemInfo({  success: res => {  this.globalData.height = res.statusBarHeight  } }) }, globalData: { userInfo: null, share: false, // 分享默認為false height: 0 // 頂部高度 }})

在app.wxss給page加一個高度百分之百。

/* app.wxss */page { height: 100%;}

? app配置到這里應該完事了。

2.組件配置

組件結構:

微信小程序,導航欄,背景圖片,navigationStyle

放源碼吧

// navbar.wxml<view class='nav-wrap' style='height: {{height*2 + 20}}px;'> <!-- 導航欄背景圖片 --> <image class="backgroundimg" src="{{navbarData.address}}" bindload="imgLoaded" style="width:{{imageWidth}}px;height:{{imageHeight}}px" /> <!-- // 導航欄 中間的標題 --> <view class='nav-title' wx:if='{{!navbarData.white}}' style='line-height: {{height*2 + 44}}px;'> {{navbarData.title}} </view> <view class='nav-title' wx:else='{{!navbarData.white}}' style='line-height: {{height*2 + 44}}px; color:#ffffff'> {{navbarData.title}} </view> <view style='display: flex; justify-content: space-around;flex-direction: column'> <!-- // 導航欄 左上角的返回按鈕 --> <!-- // 其中wx:if='{{navbarData.showCapsule}}' 是控制左上角按鈕的顯示隱藏,首頁不顯示 --> <view class='nav-capsule' style='height: {{height*2 + 44}}px;' wx:if='{{navbarData.showCapsule}}'>  <!-- //左上角的返回按鈕,wx:if='{{!share}}'空制返回按鈕顯示 -->  <!-- //從分享進入小程序時 返回上一級按鈕不應該存在 -->  <!-- navbarData.white是控制按鈕顏色的,因為背景有深淺色,返回按鈕自己找圖片 -->  <view bindtap='_navback' wx:if='{{!share&&navbarData.white}}'>  <image src='../../images/返 回 (1).svg' mode='aspectFit' class='back-pre'></image>  </view>  <view bindtap='_navback' wx:else='{{!share}}'>  <image src='../../images/返 回.svg' mode='aspectFit' class='back-pre'></image>  </view> </view> </view></view><!-- 導航欄下面的背景圖片 --><image class="backgroundimg" src="{{navbarData.address}}" bindload="imgLoaded" style="width:{{imageWidth}}px;height:{{imageHeight}}px" />

CSS:

/* navbar.wxss *//* 頂部要固定定位 標題要居中 自定義按鈕和標題要和右邊微信原生的膠囊上下對齊 */.nav-wrap { /* display: none; */ position: fixed; width: 100%; top: 0; background: #fff; color: #000; z-index: 9999999; background: #000; overflow: hidden;}/* 背景圖 */.backgroundimg { position: absolute; z-index: -1;}/* 標題要居中 */.nav-title { position: absolute; text-align: center; max-width: 400rpx; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; top: 0; left: 0; right: 0; bottom: 0; margin: auto; font-size: 36rpx; color: #2c2b2b; font-weight: 450;}.nav-capsule { display: flex; align-items: center; margin-left: 30rpx; width: 140rpx; justify-content: space-between; height: 100%;}.back-pre { width: 32rpx; height: 36rpx; margin-top: 4rpx; padding: 10rpx;}.nav-capsule { width: 36rpx; height: 40rpx; margin-top: 3rpx;}

在JSON里聲明我是個組件

{ "component": true, "usingComponents": {}}

最后是js。

 

const app = getApp()Component({ properties: { navbarData: {  //navbarData 由父頁面傳遞的數據,變量名字自命名  type: Object,  value: {},  observer: function(newVal, oldVal) {} } }, data: { height: '', //默認值 默認顯示左上角 navbarData: {  showCapsule: 1 }, imageWidth: wx.getSystemInfoSync().windowWidth, // 背景圖片的高度 imageHeight: '' // 背景圖片的長度,通過計算獲取 }, attached: function() { // 獲取是否是通過分享進入的小程序 this.setData({  share: app.globalData.share }) // 定義導航欄的高度 方便對齊 this.setData({  height: app.globalData.height }) }, methods: { // 返回上一頁面 _navback() {  wx.navigateBack() }, // 計算圖片高度 imgLoaded(e) {  this.setData({  imageHeight:   e.detail.height *   (wx.getSystemInfoSync().windowWidth / e.detail.width)  }) } //返回到首頁 // _backhome() { // wx.switchTab({ //  url: '/pages/index/index' // }) // } }})

大概就是這么多,怎么在頁面上用呢

3.具體頁面配置

? 頁面的HTML,我是內容里面放頁面的東西。

<nav-bar navbar-data='{{nvabarData}}'></nav-bar><scroll-view scroll-y style="height: 100%;"> <view class="scroll-view-item" style='padding-top: {{height}}px;'>我是內容</view></scroll-view>

頁面的JSON,navigationBarTextStyle是用來配置膠囊顏色的,因為膠囊是微信給的,不能自定義,只能改顏色,所以委屈一下從這里改一下吧

{ "usingComponents": { "nav-bar": "../../components/navbar/navbar" }, "navigationBarTextStyle": "white"}

頁面JS,圖片自己填上地址就好了。注意getApp()不要省。

const app = getApp()Page({ data: {  // 導航頭組件所需的參數  nvabarData: {   showCapsule: 1, //是否顯示左上角圖標  1表示顯示  0表示不顯示   title: '標題', //導航欄 中間的標題   white: true, // 是就顯示白的,不是就顯示黑的。   address: '../../images/蒙版組 1@2x.png' // 加個背景 不加就是沒有  },  // 導航頭的高度  height: app.globalData.height * 2 + 20 }})

4.存在的問題

上拉刷新

? 我沒有試過哈,不過原生的微信上拉刷新這么用是準定不行了,如果喜歡IOS橡皮筋模式的同學或者想要刷新的同學可以在具體頁面里刪掉scroll-view組件換成view(記得保留那個padding-top!),然后把app.json的禁用滑動刪除掉。具體的我也沒有深入,大家自行解決吧。

5.踩的坑

? 單純分享下,不看也可以,首先就是設置頁面的背景的時候,我考慮過直接在css上設置background image,但是有一個問題是,小程序的background image 只支持在線的地址或者是base64。我不知道為什么要這么做。真的很迷。但是線上的不穩定,base64太長了,代碼不好看也不好整理,所以考慮了一下還是用Image組件吧。

? 然后第二個坑又來了,image組件自帶寬高,而且用Mode里的任何值都不能完成需求。如果我設置成width:100%占滿父元素的話,他的長還是默認的340px,所以還是鼓搗了鼓搗,先設置寬度不是100%了,而是通過wx.**getSystemInfoSync**().windowWidth;來獲取的屏幕寬度。然后再通過image組件的事件獲取原圖的長寬,探后計算屏幕寬和原圖寬的率,然后再將這個率乘上原圖長度,就可以獲取到一個占滿父元素又對著比例的圖了,然后給父元素套上overflow:hidden就好了。

? 第三個坑,就是怎么做背景的拼接,想了想也不是個坑,直接在組件的最外層再加一個一模一樣的image標簽就行了,這樣就做到了標簽上顯示半個背景圖,然后在他的下層又能顯示一個完整的背景圖,因為上面被蓋住了,所以地下的下半部分和導航欄的上半部分背景正好拼接起來,所以問題也就這么解決了。

總結

以上所述是小編給大家介紹的微信小程序自定義頭部導航欄和導航欄背景圖片 navigationStyle問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久精品2019中文字幕神马| 亚洲黄色成人网| 欧美电影电视剧在线观看| 国产一区二区三区免费视频| 日本亚洲欧美成人| 成人精品在线视频| 亚洲精品电影网| 久久久久久久久久久成人| 92裸体在线视频网站| 尤物九九久久国产精品的分类| 亚洲国产精品99久久| 日韩中文视频免费在线观看| 国产偷国产偷亚洲清高网站| 久久免费在线观看| 欧美裸体男粗大视频在线观看| 欧美激情乱人伦一区| 欧美裸体xxxxx| 成人性生交大片免费看视频直播| www.欧美三级电影.com| 亚洲伦理中文字幕| 久久久精品免费视频| www.日本久久久久com.| 国产精品美女主播在线观看纯欲| 欧美肥臀大乳一区二区免费视频| 日韩成人在线免费观看| 91精品国产综合久久香蕉| 亚洲精品久久久久国产| 欧美另类精品xxxx孕妇| 亚洲天天在线日亚洲洲精| 欧美日韩国产激情| 色婷婷综合久久久久| 亚洲国产成人爱av在线播放| 亚洲91av视频| 亚洲精品国偷自产在线99热| 日韩精品日韩在线观看| 亚洲全黄一级网站| 最近2019中文字幕mv免费看| 国语自产精品视频在线看抢先版图片| 欧美日韩国产精品| 不用播放器成人网| 欧美日韩午夜激情| 日韩精品在线观看视频| 久久亚洲精品一区| 91久久精品视频| 日韩免费在线电影| 国产日韩欧美中文| 欧美在线免费观看| 美女性感视频久久久| 久久久精品网站| 国内精品久久久久影院 日本资源| 亚洲欧美中文另类| 欧美成人合集magnet| 日韩欧美在线免费观看| 亚洲一区二区久久久久久久| 色香阁99久久精品久久久| 九色成人免费视频| 91极品视频在线| 亚洲专区在线视频| 欧美性猛交xxxx偷拍洗澡| 欧美在线观看一区二区三区| 粉嫩av一区二区三区免费野| 成人444kkkk在线观看| 精品久久久久久电影| 成人激情av在线| 91精品国产91久久久久久| 亚洲国产精品久久久久久| 日韩中文字幕在线视频播放| 日韩精品亚洲视频| 日韩av一区在线观看| 日韩av观看网址| 亚洲第一区第二区| 久久久久久噜噜噜久久久精品| 亚洲国产精品成人va在线观看| 蜜臀久久99精品久久久无需会员| 亚洲天堂免费在线| 欧美超级乱淫片喷水| 亚洲欧美日韩中文在线制服| 2020欧美日韩在线视频| 国产精品免费久久久| 日韩精品视频在线播放| 欧美香蕉大胸在线视频观看| 久久久国产精品x99av| 亚洲欧洲日产国产网站| 国产精品∨欧美精品v日韩精品| 久国内精品在线| 日韩欧美中文免费| 亚洲欧洲国产伦综合| 亚洲精品99久久久久| 在线观看精品国产视频| 午夜欧美大片免费观看| 日本91av在线播放| 91色在线视频| 国产精品福利网站| 日韩亚洲国产中文字幕| 国内精品久久久久久久久| 国产精品稀缺呦系列在线| 亚洲精品色婷婷福利天堂| 一区二区亚洲欧洲国产日韩| 亚洲精品www| 国产欧美欧洲在线观看| 色婷婷av一区二区三区在线观看| 亚洲欧美制服中文字幕| 国产亚洲一区二区在线| 欧美尺度大的性做爰视频| 18一19gay欧美视频网站| 日本久久久a级免费| 日韩欧中文字幕| 最新的欧美黄色| 国产日韩欧美一二三区| 日韩一二三在线视频播| 日韩在线资源网| 欧美一区二区三区图| 精品亚洲国产成av人片传媒| 国产日产亚洲精品| 久久久噜噜噜久久| 日韩欧美精品中文字幕| 国产精品久久综合av爱欲tv| 国产精品久久激情| 国产欧美精品久久久| 久久偷看各类女兵18女厕嘘嘘| 精品亚洲一区二区三区四区五区| 日韩美女福利视频| 国产精品视频99| 久久久99免费视频| 国产精品吹潮在线观看| 久久精品成人动漫| 国产一区二区三区视频在线观看| 亚洲美女精品成人在线视频| 亚洲综合在线中文字幕| 亚洲丁香婷深爱综合| 成人免费在线视频网站| 欧美激情中文字幕在线| 色综合久久久久久中文网| 亚洲日本中文字幕| 成人免费大片黄在线播放| 在线观看亚洲区| 亚洲在线免费看| 国产精品久久久久一区二区| 日韩一区二区精品视频| 丝袜亚洲欧美日韩综合| 欧美电影在线观看网站| 夜夜狂射影院欧美极品| 午夜精品一区二区三区在线| 欧美激情视频免费观看| 日韩一区二区久久久| 综合久久五月天| www.亚洲免费视频| 亚洲欧洲成视频免费观看| 日韩电影大全免费观看2023年上| 日韩av一区在线| 国产日韩精品在线播放| 欧美裸体男粗大视频在线观看| 中文字幕欧美亚洲| 播播国产欧美激情| 丝袜亚洲欧美日韩综合| 日韩精品视频免费在线观看| 久久香蕉频线观| 欧美在线视频在线播放完整版免费观看| 中文字幕日韩专区| 日韩中文有码在线视频| 欧美日韩中文字幕| 亚洲精品久久久久中文字幕欢迎你| 色中色综合影院手机版在线观看| 3344国产精品免费看|