微信小程序---底欄特效

熟悉微信小程序的朋友可能了解在定義小程序的底欄辛蚊,一般只能固定操作比庄。

在微信小程序的官方文檔中,我們發(fā)現(xiàn)做一個底部固定的菜單是可以在app.json上配置上去進行配置的韭脊,這樣的功能非常強大掸鹅,但是那些菜單的樣式留給我們自定義樣式的卻不多塞帐,

比如一下的這種菜單的話。

在用app.json配置就涼涼了

像這種自定義的菜單呢巍沙,最好的還是做成模板了葵姥,接收數(shù)據(jù),可復(fù)用也高了句携。首先呢榔幸,模板的作用和具體可以去看下官方文檔。

首先新增一個管理模板的文件夾矮嫉,這里我取名字template削咆,然后tempalte里面新建一個nav.wxml,作為模板

原始的靜態(tài)模板蠢笋,沒有數(shù)據(jù)嵌入的拨齐,接下來我用這個來做成動態(tài)可以,

<view class="flex fix_nav_wp">

?<view class="nav_link" bindtap='gotoCompanyIndex'>

? ?<button class="defalut_btn on_cor">

? ? ?<icon class="iconfont icon-qiugouguanli del_ico idx_ico"></icon> ? ?

? ? ?<text class="txt">今日求購</text>

? ?</button>

?</view>

?<view class="nav_link" bindtap='gotobusinessCard'>

? ?<button class="defalut_btn">

? ? ?<icon class="iconfont icon-mingpianjia del_ico job_ico mp_ico"></icon>

? ? ?<text class="txt">名片</text>

? ?</button>

?</view>

?<view class="nav_link ">

? ?<button class="defalut_btn" bindtap='gotopublish'>

? ? ?<view class="plus_wp">

? ? ? ?<image src='../../images/plus_ico.png' class="plus_ico" />

? ? ?</view>

? ? ?<text class="txt txt_fb">發(fā)布</text>

? ?</button>

?</view>

?<view class="nav_link">

? ?<button class="defalut_btn" bindtap='gotoMessages'>

? ? ?<icon class="iconfont icon-yikeappshouyetubiao35 del_ico man_ico xiaox_ico"></icon>

? ? ?<text ?class="tip_tip">2</text>

? ? ?<text class="txt">消息</text>

? ?</button>

?</view>

?<view class="nav_link">

? ?<button class="defalut_btn" bindtap='bindViewMy'>

? ? ?<icon class="iconfont icon-wode del_ico mine_ico my_ico"></icon>

? ? ?<text class="txt">我的</text>

? ?</button>

?</view>

</view>

app.wxss是這樣的

/* iconfont小圖標(biāo) */

/*為了更好展示昨寞,iconfont的字體文件代碼忽略辣瞻惋,各位道友可以下載時候看*/

page{font-size:26rpx;color:#666;}

.flex{display:-webkit-flex;display: flex;width:100%;}

/* ?底部懸浮導(dǎo)航 ?*/

.fix_nav_wp{height:110rpx;position: fixed;left:0;bottom:0;background:#fff;border-top:1rpx solid #e5e5e5;z-index: 10}

.fix_nav_wp .nav_link{flex:1;}

.fix_nav_wp button{height:110rpx;display: flex;justify-content:space-between;align-items: center;padding:0;font-size:22rpx;

flex-direction: column;color:#999;position: relative;}

.fix_nav_wp .tip_tip{position: absolute;right:25rpx;top:5rpx;min-width:28rpx;line-height:32rpx;

height: 32rpx;padding:0 8rpx;color:#fff;background:#f00;border-radius:50em;border:1rpx solid #fff;}

.fix_nav_wp .nav_link .iconfont{height:60rpx;font-size:56rpx;line-height: 80rpx;color: #c4c8cc;}

.fix_nav_wp .nav_link .plus_wp{width:120rpx;height:120rpx;margin-top: -45rpx;}

.fix_nav_wp .nav_link ?image{width:120rpx;height:120rpx;}

.fix_nav_wp .nav_link .txt{height:50rpx;line-height:40rpx;color: #c4c8cc;}

.fix_nav_wp .nav_link.current .txt{color:#00a2e9;}

.fix_nav_wp .nav_link .del_ico{display: block;}

.fix_nav_wp .nav_link .cur_ico{display: none;}

.fix_nav_wp .nav_link.current .del_ico{display: none;}

.fix_nav_wp .nav_link.current .cur_ico{display: block;color:#00a2e9;}

.fix_nav_wp .nav_link .txt_fb{line-height: 18rpx}

.fix_nav_wp .nav_link .mp_ico{font-size: 50rpx;line-height: 80rpx}

.fix_nav_wp .nav_link .xiaox_ico{font-size: 64rpx;line-height: 70rpx;}

.fix_nav_wp .nav_link .my_ico{font-size: 56rpx;}

.fix_nav_wp .on_cor .del_ico, .fix_nav_wp .on_cor .txt{color: #00a2e9}

/* 清楚按鈕的默認樣式 ?*/

.defalut_btn{background: transparent;border:none;overflow: visible;padding-left:0;padding-right:0;

margin-left:0;margin-right:0;border-radius:0;}

.defalut_btn:after{display: none;}

.text-primary{color:#00a2e9;}

接下來,我們放在index.wxml上展示這個模板编矾,并且在index.js上動態(tài)傳遞底部菜單的參數(shù)等等熟史,這樣在每個需要用到這個模板功能的時候就可以在對應(yīng)頁面的js里面?zhèn)鬟f不同參數(shù)。以下代碼我會盡量注釋窄俏,讓每個看官都能看懂哈,如果不理解碘菜,或是有問題的凹蜈,可以在評論提出哈~

index.js

Page({

?data: {

? ? //定義一個數(shù)組限寞,數(shù)組每一項是對象,對象里面對應(yīng)菜單的數(shù)據(jù)

? ?//管理菜單的每一項的不同參數(shù)仰坦,還有不同布局結(jié)構(gòu)需要的額外的參數(shù)

? ?navData: [ ? ?

? ? ?{

? ? ? ?name: "今日求購", ?//文本

? ? ? ?current: 1, ? ?//是否是當(dāng)前頁履植,0不是 ?1是

? ? ? ?style: 0, ? ? //樣式

? ? ? ?ico: 'icon-qiugouguanli', ?//不同圖標(biāo)

? ? ? ?fn: 'gotoCompanyIndex' ? //對應(yīng)處理函數(shù)

? ? ?}, {

? ? ? ?name: "名片",

? ? ? ?current: 0,

? ? ? ?style: 0,

? ? ? ?ico: 'icon-mingpianjia',

? ? ? ?fn: 'gotobusinessCard'

? ? ?}, {

? ? ? ?name: "發(fā)布",

? ? ? ?current: 0,

? ? ? ?style: 1,

? ? ? ?ico: '',

? ? ? ?fn: 'gotopublish'

? ? ?}, {

? ? ? ?name: "消息",

? ? ? ?current: 0,

? ? ? ?style: 0,

? ? ? ?ico: 'icon-yikeappshouyetubiao35',

? ? ? ?fn: 'gotoMessages',

? ? ? ?msg:2 ? //因為消息是這個“消息”特有的,所以只有這個對象下游msg鍵值

? ? ?}, {

? ? ? ?name: "我的",

? ? ? ?current: 0,

? ? ? ?style: 0,

? ? ? ?ico: 'icon-wode',

? ? ? ?fn: 'bindViewMy'

? ? ?},

? ?],

?},

});

nav.wxml

模板的每一項對應(yīng)一個菜單對象悄晃,也就說玫霎,我們在引入后還需要遍歷navData數(shù)組,將不同參數(shù)讀取出來妈橄,由于我用的是es6的對象拓展符號庶近,它會進行解構(gòu),可能現(xiàn)在模板看起來有很多人覺得疑問眷蚓,怎么直接就寫對象下的鍵呢鼻种,這個下面我會詳解~

這里主要處理的是,通過區(qū)分style不同布局結(jié)構(gòu)沙热,通過其他結(jié)構(gòu)布局都保持一致叉钥,并且有消息顯示的做特別判斷

<template name="nav">

? ? ?<view class="nav_link" bindtap="{{fn}}">

? ? ? ?<button class="defalut_btn {{current==0?'':'on_cor'}}"> ?

? ? ? ? ?<block wx:if="{{style==0}}">

? ? ? ? ? ? ? ?<icon class="iconfont {{ico}} del_ico idx_ico"></icon>

? ? ? ? ? ? ? ?<text wx:if="{{msg>0}}" class="tip_tip">{{msg}}</text>

? ? ? ? ? ? ? ?<text class="txt">{{name}}</text>

? ? ? ? ?</block>

? ? ? ? ?<block wx:if="{{style==1}}"> ?

? ? ? ? ? ? ? ?<view class="plus_wp">

? ? ? ? ? ? ? ? ?<image src='../../images/plus_ico.png' class="plus_ico" />

? ? ? ? ? ? ? ?</view>

? ? ? ? ? ? ? ?<text class="txt txt_fb">{{name}}</text>

? ? ? ? ?</block>

? ? ? ?</button>

? ? ?</view>

</template>

index.wxml

通過import 將模板引入到index.wxml,我們靜態(tài)數(shù)據(jù)下篙贸,有個最外層類名為flex fix_nav_wp的view投队,所以直接寫過來,當(dāng)然啦爵川,也可以寫在模板上哈蛾洛,現(xiàn)在我們通過直接遍歷navData,template 的is屬性通過前面我們在nav.wxml上的template 的name屬性可以知道我們正在用nav.wxml下的name為nav的模板雁芙,遍歷navData轧膘,當(dāng)前的對象是item,這個item對象就是navData里面的對象,包含有name,style,current等屬性兔甘,通過...item實際將當(dāng)前對象解構(gòu)了

這里簡單說下來下具體...拓展符做了什么谎碍,當(dāng)然啦,要記得再支持es6的瀏覽器打開測試哈洞焙,也可以用webpack打包后測試?yán)?/p>

varobj={a:1,b:2,c:3}console.log(...[obj]);

現(xiàn)在我們就知道了沽损,為什么...item之后拓售,模板只需要寫鍵(屬性名)就可以了,因為他把當(dāng)前的那個對象解構(gòu)了。

源碼鏈接:https://pan.baidu.com/s/1yV8__9o9sR_-jsT7zvuBQg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末薄榛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姻僧,更是在濱河造成了極大的恐慌镜豹,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甸鸟,死亡現(xiàn)場離奇詭異惦费,居然都是意外死亡兵迅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門薪贫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恍箭,“玉大人,你說我怎么就攤上這事瞧省〕敦玻” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵鞍匾,是天一觀的道長交洗。 經(jīng)常有香客問我,道長候学,這世上最難降的妖魔是什么藕筋? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮梳码,結(jié)果婚禮上隐圾,老公的妹妹穿的比我還像新娘。我一直安慰自己掰茶,他們只是感情好暇藏,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著濒蒋,像睡著了一般盐碱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沪伙,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天瓮顽,我揣著相機與錄音,去河邊找鬼围橡。 笑死暖混,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翁授。 我是一名探鬼主播拣播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼收擦!你這毒婦竟也來了贮配?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤塞赂,失蹤者是張志新(化名)和其女友劉穎泪勒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡酣藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年曹洽,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳍置。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辽剧。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖税产,靈堂內(nèi)的尸體忽然破棺而出怕轿,到底是詐尸還是另有隱情,我是刑警寧澤辟拷,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布撞羽,位于F島的核電站,受9級特大地震影響衫冻,放射性物質(zhì)發(fā)生泄漏诀紊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一隅俘、第九天 我趴在偏房一處隱蔽的房頂上張望邻奠。 院中可真熱鬧,春花似錦为居、人聲如沸碌宴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贰镣。三九已至,卻和暖如春膳凝,著一層夾襖步出監(jiān)牢的瞬間碑隆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工蹬音, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留上煤,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓祟绊,卻偏偏與公主長得像楼入,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子牧抽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

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