仿照nike小程序的分類切換效果

最近看到nike小程序的一個切換效果還很不錯扶镀,所以有空仿照了一下叽讳,先上效果圖

布局很簡單? 主要是做切換的動畫效果和輪播圖高度自適應文狱,先看一下xml代碼

XML

<view?class="container">

????<view?class="banner-body">

????????<image?src="{{banner[navIndex].url}}"?mode="aspectFill"?lazy-load="{{true}}"></image>

????????<view?class="nav-view">

????????????<view?bindtap="changeNav"?data-index="{{index}}"?wx:for="{{nav}}"?wx:key="index"?class="nav-item?{{index===navIndex?'on':''}}">

????????????????<text?class="iconfont?{{item.icon}}"></text>

????????????????<text>{{item.title}}</text>

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

????????????<view?class="active-view"?style="left:calc(20rpx?+?{{navIndex*190}}rpx?)"></view>

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

????</view>

????<view?class="swiper-contaier">

????????<swiper?interval="500"?current="{{navIndex}}"?bindanimationfinish="finishTap"?duration="500"?bindchange="swiperChange"?style="height:calc(?{{130*(banner[navIndex].data.length/2)}}rpx?)">

????????????<swiper-item?wx:for="{{banner}}"?wx:key="index"?hidden="{{((navIndex==index))?false:true}}">

????????????????<view?class="swiper-view">

????????????????????<view?class="item?{{isStartAnimation?(navIndex==index?'in':'out'):''}}"?style="animation-duration:?{{(jndex%2==0)?(0.3+(jndex/16)):(0.4+(jndex/16))}}s;"?wx:for="{{item.data}}"?wx:key="jndex"?wx:for-index="jndex"?wx:for-item="jtem">

????????????????????????<text?class="iconfont?{{jtem.img}}"></text>{{jtem.title}}

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

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

????????????</swiper-item>

????????</swiper>

????</view>

</view>

wxss(這里的樣式我用的是less)


.container{

????.banner-body{

????????width:?640rpx;

????????height:?320rpx;

????????margin:?30rpx?auto?0;

????????position:?relative;

????????image{

????????????width:?100%;

????????????height:?100%;

????????????border-radius:?20rpx;

????????}

????????.nav-view{

????????????width:?600rpx;

????????????height:?100rpx;

????????????background-color:?#fff;

????????????position:absolute;

????????????bottom:?-50rpx;

????????????left:?0;

????????????right:?0;

????????????border-radius:?50rpx;

????????????margin:?0?auto;

????????????box-shadow:?0?12rpx?10rpx?#f1f1f1;

????????????padding:?10rpx?20rpx;

????????????display:?flex;

????????????align-items:?center;

????????????justify-content:?center;

????????????.active-view{

????????????????width:?190rpx;

????????????????height:?80rpx;

????????????????background-color:?#333;

????????????????position:?absolute;

????????????????border-radius:?40rpx;

????????????????z-index:?1;

????????????????left:?20rpx;

????????????????transition:?left?0.3s;

????????????}

????????????.nav-item{

????????????????width:?190rpx;

????????????????height:?80rpx;

???????????????display:?flex;

???????????????align-items:?center;

???????????????justify-content:?center;

???????????????font-size:?24rpx;

???????????????color:?#333;

???????????????z-index:?2;

???????????????.iconfont{

???????????????????margin-right:?10rpx;

???????????????????font-size:?32rpx;

???????????????}

???????????????&.on{

???????????????????color:?#fff;

???????????????}

????????????}

????????}

????}

????.swiper-contaier{

????????width:?100%;

????????margin:?100rpx?auto?0;

????????.swiper-view{

????????????width:?640rpx;

????????????display:?flex;

????????????flex-wrap:?wrap;

????????????margin:?0?auto;

????????????justify-content:?space-between;

????????????.item{

????????????????width:?310rpx;

????????????????height:?100rpx;

????????????????background-color:?#f9f9f9;

????????????????margin-bottom:?20rpx;

????????????????display:?flex;

????????????????padding:?20rpx;

????????????????align-items:?center;

????????????????font-size:?22rpx;

????????????????border-radius:?10rpx;

????????????????&.in{

????????????????????animation-name:?inanimation;

????????????????????animation-timing-function:?linear;

????????????????}

????????????????&.out{

????????????????????animation-name:?outanimation;

????????????????????animation-timing-function:?linear;

????????????????}

????????????????.iconfont{

????????????????????margin-right:?20rpx;

????????????????????font-size:?50rpx;

????????????????}

????????????}

????????}

????}

????@keyframes?inanimation?{

????????0%{

????????????transform:?translateX(0);

????????}

????????50%{

????????????transform:?translateX(400rpx);

????????}

????????100%{

????????????transform:?translateX(0);

????????}

????}

????@keyframes?outanimation?{

????????0%{

????????????transform:?translateX(0);

????????}

????????50%{

????????????transform:?translateX(-400rpx);

????????}

????????100%{

????????????transform:?translateX(-800rpx);

????????}

????}

}

最后就是js了


?data:?{

????banner:[

??????{url:'/images/cre_01.png',

????????data:[

??????????{img:'iconxiezi',title:"所有女子鞋類"},

??????????{img:'iconxiezi',title:"人氣熱銷"},

??????????{img:'iconxiezi',title:"休閑"},

??????????{img:'iconxiezi',title:"新品上市"},

??????????{img:'iconxiezi',title:"跑步"},

??????????{img:'iconxiezi',title:"Air?Jordan?1"},

??????????{img:'iconxiezi',title:"新品上市"},

??????????{img:'iconxiezi',title:"跑步"},

??????????{img:'iconxiezi',title:"Air?Jordan?1"},

??????????{img:'iconxiezi',title:"Air?Jordan?1"},

??????????{img:'iconxiezi',title:"新品上市"},

??????????{img:'iconxiezi',title:"跑步"},

??????????{img:'iconxiezi',title:"Air?Jordan?1"}

????????]

??????},

??????{url:'/images/cre_02.png',

????????data:[

??????????{img:'iconfuzhuang',title:"所有女子服裝"},

??????????{img:'iconfuzhuang',title:"上衣/T恤"},

??????????{img:'iconfuzhuang',title:"外套/夾克"},

??????????{img:'iconfuzhuang',title:"連帽衫/衛(wèi)衣"},

??????????{img:'iconfuzhuang',title:"運動褲/緊身褲"},

??????????{img:'iconfuzhuang',title:"運動內(nèi)衣"},

??????????{img:'iconfuzhuang',title:"連帽衫/衛(wèi)衣"},

??????????{img:'iconfuzhuang',title:"運動褲/緊身褲"},

??????????{img:'iconfuzhuang',title:"運動內(nèi)衣"}

????????]

??????},

??????{url:'/images/cre_03.png',

????????data:[

??????????{img:'iconbasketball',title:"所有女子配件"},

??????????{img:'iconbasketball',title:"包"},

??????????{img:'iconbasketball',title:"帽子/頭帶"},

??????????{img:'iconbasketball',title:"配件折扣優(yōu)惠"}

????????]

??????}

????],

????nav:[

??????{title:'鞋類',icon:'iconxiezi'},

??????{title:'服裝',icon:'iconfuzhuang'},

??????{title:'配件',icon:'iconbasketball'},

????],

????navIndex:0,

????isStartAnimation:false,

????ischangeNav:true

??},

??/**

???*?生命周期函數(shù)--監(jiān)聽頁面加載

???*/

??onLoad:?function?(options)?{


??},

??changeNav(e){

????if(!this.data.ischangeNav)?return;

????this.setData({navIndex:e.currentTarget.dataset.index,ischangeNav:false})

??},

??finishTap(e){

????const{source,current}=e.detail

????this.setData({navIndex:current,isStartAnimation:source?false:true,ischangeNav:true})

??},

??swiperChange(e){

????const{source,current}=e.detail

????if(source=='touch'){

??????this.setData({navIndex:current,ischangeNav:true,isStartAnimation:false})

????}else{

??????this.setData({isStartAnimation:true})

????}


??}


如發(fā)現(xiàn)bug請評論更新哦

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蝠咆,一起剝皮案震驚了整個濱河市冰更,隨后出現(xiàn)的幾起案子啡邑,更是在濱河造成了極大的恐慌贱勃,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谤逼,死亡現(xiàn)場離奇詭異贵扰,居然都是意外死亡,警方通過查閱死者的電腦和手機流部,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門戚绕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枝冀,你說我怎么就攤上這事舞丛≡抛樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長链烈。 經(jīng)常有香客問我靖榕,道長,這世上最難降的妖魔是什么片林? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怀骤,結(jié)果婚禮上费封,老公的妹妹穿的比我還像新娘。我一直安慰自己蒋伦,他們只是感情好弓摘,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痕届,像睡著了一般韧献。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上研叫,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天锤窑,我揣著相機與錄音,去河邊找鬼嚷炉。 笑死渊啰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的申屹。 我是一名探鬼主播绘证,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哗讥!你這毒婦竟也來了嚷那?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤杆煞,失蹤者是張志新(化名)和其女友劉穎魏宽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體索绪,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡湖员,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瑞驱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娘摔。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唤反,靈堂內(nèi)的尸體忽然破棺而出凳寺,到底是詐尸還是另有隱情鸭津,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布肠缨,位于F島的核電站逆趋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏晒奕。R本人自食惡果不足惜闻书,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脑慧。 院中可真熱鬧魄眉,春花似錦、人聲如沸闷袒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽囊骤。三九已至晃择,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間也物,已是汗流浹背宫屠。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留焦除,地道東北人激况。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像膘魄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竭讳,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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