微信小程序?qū)崿F(xiàn)商品分類(lèi)頁(yè)過(guò)程結(jié)束
首先我們來(lái)分析下UI小妹發(fā)來(lái)的產(chǎn)品原型圖:
微信小程序商品分類(lèi)頁(yè)需要實(shí)現(xiàn)
1.單擊左邊的商品類(lèi)目,右側(cè)實(shí)現(xiàn)聯(lián)動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)商品類(lèi)目標(biāo)題;
2.觸屏拖動(dòng)右側(cè)商品列表,右側(cè)跳轉(zhuǎn)到對(duì)應(yīng)商品類(lèi)目;
2.分析需求我們可以把屏幕分為以下部分,主要使用到viewscroll-view,代碼結(jié)構(gòu)和分解圖如下:
<view> <!--搜索框--> <view></view> <!--商品類(lèi)別.商品列表--> <view> <!--left--> <scroll-view></scroll-view> <!--right--> <scroll-view></scroll-view> </view> </view>
3.搜索view比較簡(jiǎn)單,在這里就不在闡述,主要實(shí)現(xiàn)商品類(lèi)別和商品列表的交互。
scroll-view使用到的屬性
scroll-y:允許縱向滾動(dòng)(需要設(shè)置高度)。
scroll-with-animation:在設(shè)置滾動(dòng)條位置時(shí)使用動(dòng)畫(huà)過(guò)渡。
scroll-top:設(shè)置豎向滾動(dòng)條位置(商品列表上下滑動(dòng)時(shí)動(dòng)態(tài)變更位置)。
scroll-into-view:值應(yīng)為某子元素id(id不能以數(shù)字開(kāi)頭)。設(shè)置哪個(gè)方向可滾動(dòng),則在哪個(gè)方向滾動(dòng)到該元素。
代碼實(shí)現(xiàn)最后結(jié)果如下:
1.test.wxml
//******************************************************* //* 微信版螞蟻森林上線(xiàn)了!微信搜螞蟻森林立即體驗(yàn)! * //******************************************************* <view class="container"> <view style="height: 100rpx;"></view> <view class="VerticalBox"> <!--left--> <scroll-view class="VerticalNav nav" scroll-y scroll-with-animation scroll-top="{{navTop}}" style="height:calc(100vh - 100rpx)"> <view class="cu-item {{index==TabCur?'text-green cur':''}}" wx:for="{{dRes}}" wx:key="this" bindtap='tabSelect' data-id="{{index}}">{{item._name}}</view> </scroll-view> <!--right--> <scroll-view class="VerticalMain" scroll-y scroll-with-animation style="height:calc(100vh - 100rpx)" scroll-into-view="main-{{titleCur}}" bindscroll="VerticalMain"> <view class="padding-lr" wx:for="{{dRes}}" wx:key="this" id="main-{{index}}"> <!--標(biāo)題--> <view class='cu-bar'> <view class='action iconfont icon-icon_collect'> {{item._name}</view> </view> <!--列--> <block wx:if="{{item.res.length>0}}"> <template is="hotSelling" wx:for="{{item.res}}" wx:key="this" data="{{item}}"></template> </block> <block wx:else> <view style="height: 300rpx;line-height: 300rpx;text-align: center;color:gray;">本類(lèi)目無(wú)</view> </block> </view> </scroll-view> </view> </view>
2.test.wxss
.VerticalBox {display: flex;width: 100vw;} .VerticalNav.nav {width: 200rpx;white-space: initial;} .VerticalNav.nav .cu-item {width: 100%;text-align: center;background-color: #fff;margin: 0;border: none;height: 50px;line-height: 50px;position: relative;} .VerticalNav.nav .cu-item.cur {background-color: #f1f1f1;} .text-green {color: #39b54a;font-weight: bold;} .VerticalNav.nav .cu-item.cur::after {content: ''; width: 18rpx;height: 40rpx;border-radius: 10rpx 0 0 10rpx;position: absolute;background-color: currentColor;top: 0;right: 0rpx;bottom: 0;margin: auto;} .VerticalMain {background-color: #f1f1f1;} .padding-top {padding-top: 30rpx;} .padding-lr {padding-left: 20rpx;padding-right: 20rpx;} .cu-bar {display: flex;position: relative;align-items: center;min-height: 100rpx;justify-content: space-between;position: relative;background-color: white;color: #666666;margin-bottom: 2rpx;background-image: linear-gradient(rgb(0, 180, 230), rgb(250, 250, 250));} .cu-bar .action {display: flex;align-items: center;height: 100%;justify-content: center;max-width: 100%;}
3.test.js
//******************************************************* //* 微信版螞蟻森林上線(xiàn)了!微信搜螞蟻森林立即體驗(yàn)! * //******************************************************* // 微信版螞蟻森林:https://developers.weixin.qq.com/community/personal/oCJUswzZJO5lZcMDd3mKoDAClVdo const app = getApp() Page({ data: { TabCur: 0, //當(dāng)前點(diǎn)擊Tab titleCur: 0,//標(biāo)題指引 navTop: 0, load: true, dRes: [], }, tabSelect(e) { let i = Number(e.currentTarget.dataset.id) this.setData({ TabCur: i, titleCur: i, navTop: (i - 1) * 50 }) }, VerticalMain(e) { let self= this; let dRes = this.data.dRes; let tabHeight = 0; if (this.data.load) { for (let i = 0; i < dRes.length; i++) { let view = wx.createSelectorQuery().select("#main-" + i); view.fields({ size: true }, data => { dRes[i].top = tabHeight; tabHeight = tabHeight + data.height; dRes[i].bottom = tabHeight; }).exec() } self.setData({ load: false, dRes: dRes }) } let scrollTop = e.detail.scrollTop + 20; for (let i = 0; i < dRes.length; i++) { if (scrollTop > dRes[i].top && scrollTop < dRes[i].bottom) { that.setData({ navTop: (i - 1) * 50, TabCur: i }) return false } } } })
到此這篇關(guān)于微信小程序?qū)崿F(xiàn)商品分類(lèi)頁(yè)過(guò)程結(jié)束的文章就介紹到這了,更多相關(guān)小程序商品分類(lèi)頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文詳解Promise.race()方法功能及應(yīng)用場(chǎng)景
這篇文章主要為大家介紹了Promise.race()方法功能及應(yīng)用場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03js一般方法改寫(xiě)成面向?qū)ο蠓椒ǖ臒o(wú)限級(jí)折疊菜單示例代碼
本例是應(yīng)用別人的例子,原來(lái)那位老兄是用一般方法寫(xiě)成的無(wú)限級(jí)折疊菜單,通過(guò)了一些簡(jiǎn)化修改,將原來(lái)的例子改成了面向?qū)ο蟮姆绞?/div> 2013-07-07JavaScript中你不知道的Object.entries用法
大家應(yīng)該都知道,Object.entries()方法返回一個(gè)給定對(duì)象自身可枚舉屬性的鍵值對(duì)數(shù)組,其排列與使用 for...in 循環(huán)遍歷該對(duì)象時(shí)返回的順序一致,這篇文章主要給大家介紹了關(guān)于JavaScript中你不知道的Object.entries用法的相關(guān)資料,需要的朋友可以參考下2021-10-10javascript的慣性運(yùn)動(dòng)實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了javascript的慣性運(yùn)動(dòng)實(shí)現(xiàn)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09最新評(píng)論