【小程式】自定義導航欄
這個需求要不是UI和我講有其他小程式實現了,我都還以為小程式還不能做到自定義導航。還好是在設計階段給出的需求,不然。。。
先看看效果吧
微信小程式自定義導航欄
開始接介紹用法:
1:配置app.json
掃碼都別管,先檢視文件window配置
然後在app.json
設定navigationStyle
為custom
(自定義導航欄)
注意!: 如果這裡設定為自定義導航,那麼所有頁面都會變成自定義導航;想在其他頁面的.json檔案配置自定義導航是沒用的,所以後面需要用到template模板
或者component元件
2:瞭解下原導航在各個手機型號的高度(適配)
導航欄高度
wx.getSystemInfo 和 wx.getSystemInfoSync 獲取機器資訊
screenHeight - windowHeight 計算標題欄高度
標題欄高度:
‘iPhone’: 64,
‘iPhone X’: 88,
‘android’: 68
小程式部分真機裝置資訊採集
3:編寫component或者template
這裡app.json配置影響的全域性配置,所以其他頁面都成了自定義導航,只有寫一個公共元件或者模板套用了(隨你挑選一個),這裡我選擇component構造器。
Component構造器可用於定義元件,呼叫Component構造器時可以指定元件的屬性、資料、方法等。
JSON
一開始就貼出JSON,是為了提醒某些忘記配置json得人(為啥沒效果!什麼鬼東西!垃圾元件!cao):
建立component,先在json配置好component
使用component,先在json配置component的名稱和引用路徑
{
"component": true,
"usingComponents": {}
}
wxml
<view class='status-bar'>
<view class='goBack' bindtap='goBack' style="padding-top:{{bar_Height}}px;" hidden='{{show_bol}}'> /*返回按鈕*/
<image src='/images/back.png'></image>
</view>
<view class="tabar {{my_class ? ' tabar2':''}}" style="padding-top:{{bar_Height}}px;">
<text class="red">{{title}}</text> /*標題*/
</view>
</view>
hidden='{{show_bol}}'
這裡的show_bol
就是用來控制是否顯示返回標籤(說白了就是是內頁還是首頁,該不該有返回功能)這裡的show_bol
就是用來控制是否顯示返回標籤(說白了就是是內頁還是首頁,該不該有返回功能)padding-top:{{bar_Height}}px
bar_Height為獲取到的手機狀態列的高度;
js
Component({
/* 元件的屬性列表 */
properties: {
title: { // 設定標題
type: String,
value: ''
},
show_bol: { // 控制返回箭頭是否顯示
type: Boolean,
value: false
},
my_class: { // 控制樣式
type: Boolean,
value: false
}
},
/* 元件的初始資料 */
data: {
type: "元件",
bar_Height: wx.getSystemInfoSync().statusBarHeight // 獲取手機狀態列高度
},
/* 元件的方法列表 */
methods: {
goBack: function () { // 返回事件
console.log("退後")
wx.navigateBack({
delta: 1,
})
}
}
})
wxss
/* 頂部導航 */
.status-bar {
width: 100%;
z-index: 99999;
position: fixed;
top: 0;
}
.goBack{
position: absolute;
top: 15rpx;
font-size:12pt;
}
.goBack image{
width: 21rpx;
height: 40rpx;
padding: 12rpx 20px 0 30rpx;
}
.tabar {
display: flex;
justify-content: center;
background-color: #fff;
}
.tabar2{
background: transparent !important;
}
.tabar2 text{
color: #fff !important;
font-weight: lighter !important;
}
.tabar text {
padding: 20rpx 30rpx;
color: #353535;
font-size: 12pt;
font-weight: bold;
}
.tabar .active {
color: #fff;
}
4:使用元件(一般都在內頁才用到)
json
{
"usingComponents": {
"component": "/component/component" //component自定義名稱 後面為元件路徑
}
}
wxml
<component title='我是tabbar的頁面' show_bol='{{false}}'></component> //show_bol為false 就是沒有返回箭頭
<component title='我是帶返回的頁面' show_bol='{{true}}'></component> //show_bol為false 就是沒有返回箭頭
問題:
這裡導航是出來了,但是會有個問題,導航嘛肯定是要固定定位的,所以他就脫離了文件流,元件放進去後,會懸浮在上面,遮擋了下面的內容,這時候就需要給父元素加個padding-top了
// e:1
<view class='box-detail' style="padding-top:{{bar_Height + 45}}px;">
<component title='EatUp趣味食光' show_bol='{{false}}'></component>
...
..
.
</view>
// e:2
<view class='box-detail' style="padding-top:{{widnowH <=568 ?bar_Height + 40:bar_Height + 45}}px;">
<component title='EatUp趣味食光' show_bol='{{false}}'></component>
...
..
.
</view>
bar_Height
: wx.getSystemInfoSync().statusBarHeight (狀態列的高度)
widnowH
: wx.getSystemInfoSync().screenHeight (螢幕高度)
這裡的padding-top的距離,就是狀態列的高度
+ 導航欄的高度
了,然後就可以很愉快的使用了,不過不同的機型還需要不同的適配,如果有更好的辦法,可以給我講解下,感謝大佬!
5:最終效果
相關推薦
【小程式】自定義導航欄
這個需求要不是UI和我講有其他小程式實現了,我都還以為小程式還不能做到自定義導航。還好是在設計階段給出的需求,不然。。。 先看看效果吧 微信小程式自定義導航欄 開始接介紹用法: 1:配置app.json 掃碼都別管,先檢視文件window配置 然後在ap
【微信小程式】自定義模態框例項
原文連結:https://mp.weixin.qq.com/s/23wPVFUGY-lsTiQBtUdhXA1概述由於官方API提供的顯示模態彈窗,只能簡單地顯示文字內容,不能對對話方塊內容進行自定義,欠缺靈活性,所以自己從模態彈窗的原理角度來實現了自定義的模態對話方塊。今天
【微信小程式】自定義元件
微信小程式中的元件前言之前做小程式開發的時候,對於開發來說比較頭疼的莫過於自定義元件了,當時官方對這方面的文件也只是寥寥幾句,一筆帶過而已,所以寫起來真的是非常非常痛苦!!好在微信小程式的庫從 1.6.3 開始,官方對於自定義元件這一塊有了比較大的變動,首先比較明顯的感覺就是文件比以前全多了,有木有!(小程式
【微信小程式】自定義抽屜式選單(底部,從下向上拉出)
微信提供了動畫api,就是下面這個通過使用這個建立動畫的api,可以做出很多特效出來下面介紹一個抽屜選單的案例實現程式碼:wxml:<!--button--> <view class="btn" bindtap="powerDrawer" data-stat
微信小程式開發筆記2——自定義導航欄元件
本文主要是熟悉微信小程式自定義元件的開發,以一個常見的導航欄(Tabbar)需求為例。 官方文件:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/ 首先我們先看一
微信小程式自定義導航欄 navigation bar 返回鍵 首頁
微信小程式自定義導航欄(wx_custom_navigation_bar) 自定義返回鍵、首頁鍵,動態設定標題,響應式元件 版本號:1.0.0 作者:chen-yt github: https://github.com/chen-yt/wx_custom_navigation
小程式自定義導航欄
將app.json裡的navigationStyle設定為navigationStyle:custom。可以在.wxss裡通過margin和padding來自定義導航欄。 例如在.wxml裡寫 <view class="nav">我是汽車維修技師</view>
【小程式】獲取自定義屬性
<view bindtap="getDataAttr" data-postId="{{postId}}" data-id="id" class="div"> </view> getDataAttr:function(e){ console.log(e.currentTa
【微信小程式】微信小程式掃描自定義二維碼到指定頁面的坑
重點 測試版本不需要釋出也可以進行測試 測試階段不釋出,只能掃描測試連結中的地址中的二維碼,其他的就算符合規範也不可以 如果是要動態匹配引數,那麼動態部分必定是/後面的字串 如果是要動態匹配引數,那
Taro 小程式 自定義導航欄
在小程式中,有的頁面需求可能需要我們做一個自定義的導航欄, 今天就來踩一踩坑 首先需要在app.js 中給全域性的導航欄隱藏, 1 // app.js 2 3 window: { 4 navigationStyle: 'custom', 5 }, 6 // navigationSt
【微信小程式】自適應Canvas 帶跑馬燈的辛運大轉盤 內附程式碼和詳解
第一篇關於Canvas環形進度條的博文獲得不少關注度,時隔這麼多日才發出第二篇關於Canvas的博文,並不是我懈怠了,而是最近公司比較忙,寫好的demo一直沒機會發,今天公司終於閒下來了,把我做好的demo整理一下發上來,給喜歡canvas的初學者看看,因為本人也是初學者,所
【Android】自定義標題欄,底部欄
為了簡化起見,只寫關鍵屬性,具體需要可以自己慢慢調 頂部標題title_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:backg
【.net 深呼吸】自定義應用程序配置節
system 深呼吸 進行 eve none 價值 判斷 發現 debug 實際上,應用程序配置文件 App.config,是由各個節(Configuration Section)組成的,通常,配置節是按功能劃分的,比如我們很熟悉的 appSettings、connecti
【小程式】分頁載入資料,下拉載入更多,上拉重新整理
【 小程式】分頁載入資料,下拉載入更多,上拉重新整理 分頁載入的優點就不多說了,下面主要記錄一下幾個問題點。 scroll-view元件不能用在頁面根佈局中,不然觸發不了系統的onPullDownRefresh()、onReachBottom()回撥。 在Page頁
【小程式】解決 Android機型上button按鈕出現邊框
【小程式】解決 Android機型上button按鈕出現邊框 問題描述: 在Android機型上出現button按鈕元件,在四個角上出現邊框。在模擬器、iPhone手機上沒有邊框。 問題原因: button控制元件上有一個偽元素(::after),雖然
【小程式】開發 JS知識總結
JS知識總結 js判斷字元是否為空的方法: //判斷字元是否為空的方法 function isEmpty(obj){ if(typeof obj == "undefined" || obj == null || obj == ""){ ret
微信小程式--15自定義元件
關於自定義元件有兩個知識點需要說一下: 1.子元件向父元件傳引數 在子元件內部,這樣觸發事件,傳遞引數 在父元件內部這樣接收引數 2. 父元件向子元件傳引數 在父元件這裡定義一個now-in 在子元件這裡引入 這樣的話,nowIn就相當於data裡
CSS實現自定義導航欄帶二級選單
程式碼如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> &
【TP5.1】自定義初始化方法
author:咔咔 wechat:fangkangfk 初始化方法 平時在做專案的時候會用到的初始化方法initialize()這個方法 我們可以檢視一下原始碼: 通過方法的追蹤,我們在controller這個類找到了這個方法 這也就是
【TP5.1】樹狀導航欄(無極限分類)
author:咔咔 wechat:fangkangfk 業務場景: 使用無限極分類來做 我們還是需要將資料查出來 然後使用我們的單元測試看一下資料 很明顯這不是我們需要的資料結構 下來們需要引入一