小程序微信商品列表的左右聯(lián)動(dòng)

先前看到網(wǎng)上不少大神寫的demo搪搏,其菜單欄主要以 A,B,C,D等字母為主漱办,即A,B,C,D等字母為對(duì)應(yīng)該項(xiàng)攜帶的 id(id不能為漢字或純數(shù)字)飘哨。而筆者現(xiàn)在寫的項(xiàng)目菜單欄為漢字定拟,所以需要改變數(shù)據(jù)格式,進(jìn)而需要改變 wxml 中的循環(huán)嵌套和獲取蹋嵌。以下為成型后效果育瓜,希望對(duì)讀者有幫助永丝。

image

實(shí)現(xiàn)該功能的思路:通過點(diǎn)擊左側(cè)滑欄的某一項(xiàng)志秃,獲取到該元素?cái)y帶的 id 爆阶,然后動(dòng)態(tài)傳給右側(cè)滑欄的 scroll-into-view 禾唁,從而實(shí)現(xiàn)右側(cè)滑欄對(duì)應(yīng)的該元素運(yùn)動(dòng)置頂。

以下為完整數(shù)據(jù)

數(shù)據(jù)格式:

var list = { "List": [ { 'A': [ { name: '白酒' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'B': [ { name: '白酒1' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'C': [ { name: '白酒2' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'D': [ { name: '白酒3' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'E': [ { name: '白酒4' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'F': [ { name: '白酒5' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'G': [ { name: '白酒6' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'H': [ { name: '白酒7' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'I': [ { name: '白酒8' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'J': [ { name: '白酒9' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'K': [ { name: '白酒10' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'L': [ { name: '白酒11' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ], 'M': [ { name: '白酒12' }, { 'picture': '../../img/55ac9689Ncc876cf1.jpg', 'desc': '葡萄酒' }, { 'picture': '../../img/56668c04N5cb325b7.jpg', 'desc': '洋酒' }, { 'picture': '../../img/586e055eNf678fd52.png', 'desc': '汾酒' }, { 'picture': '../../img/596d6f4eNb62c24c1.jpg', 'desc': '汾酒' } ] } ], } module.exports = list; 

wxml內(nèi)容:
<view class="container"> <!--左側(cè)欄--> <scroll-view class='scroll_left' scroll-y="true"> <view class="nav_left"> <block wx:for="{{list}}" wx:for-index="idx" wx:for-item="itemName" wx:key="*this"> <!--當(dāng)前項(xiàng)的id等于item項(xiàng)的id定鸟,那個(gè)就是當(dāng)前狀態(tài)--> <!--用data-index記錄這個(gè)數(shù)據(jù)在數(shù)組的下標(biāo)位置孽拷,使用data-id設(shè)置每個(gè)item的id值荠藤,供打開右側(cè)側(cè)滑欄使用--> <view class="nav_left_items {{curNav == idx ? 'active' : ''}}" bindtap="switchRightTab" data-index="{{index}}" data-id="{{item.id}}" id="{{idx}}">{{itemName[0].name}}</view> </block> </view> </scroll-view> <!--右側(cè)欄--> <!--如果使用 scroll-into-view 屬性怀喉,必須設(shè)置 scroll-view 的高度书妻,且最好是動(dòng)態(tài)獲取屏幕高度 --> <!-- scroll-into-view 屬性 值應(yīng)為某子元素id(id不能以數(shù)字開頭)。設(shè)置哪個(gè)方向可滾動(dòng)躬拢,則在哪個(gè)方向滾動(dòng)到該元素 --> <scroll-view scroll-y="true" class="scroll_right" style="height:{{winHeight}}px;" scroll-into-view="{{scrollTopId}}" scroll-with-animation="true"> <view class="nav_right"> <view class='mink' wx:for="{{list}}" wx:for-index="idx" wx:for-item="itemName" wx:key="*this" bindscroll="scrollTop"> <view class='minl' id='{{idx}}'>{{itemName[0].name}}</view> <block wx:for="{{itemName}}" wx:for-index="idex" wx:key="*this" > <view class="nav_right_items" wx:if="{{idex>0}}"> <navigator url="../detail/detail" hover-class="other-navigator-hover"> <view> <image src="{{item.picture}}"></image> <view > <text>{{item.desc}}</text> </view> </view> </navigator> </view> </block> </view> <view style="width:100%;height:30rpx;background:#f0f4f7"></view> </view> </scroll-view> </view>
js內(nèi)容:
// pages/list-1/list-1.js
var list = require('../../utils/list.js')
Page({
  data: {
    // 左側(cè)點(diǎn)擊類樣式
    curNav: 'A',
  },
  onReady: function () {
    // 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成
    var listChild1 = list.List[0];
    var that = this;
    // 獲取可視區(qū)高度
    wx.getSystemInfo({
      success: function (res) {
        that.setData({
          list: listChild1,
          winHeight: res.windowHeight,
        })
      }
    })
  },
  //點(diǎn)擊左側(cè) tab 躲履,右側(cè)列表相應(yīng)位置聯(lián)動(dòng) 置頂
  switchRightTab: function (e) {
    var id = e.target.id;
    console.log(typeof id)
    this.setData({
      // 動(dòng)態(tài)把獲取到的 id 傳給 scrollTopId
      scrollTopId: id,
      // 左側(cè)點(diǎn)擊類樣式
      curNav:id
    })
  }
})  

wxss代碼 (樣式可能會(huì)不全见间,需要引入[weui.wxss](https://link.jianshu.com/?t=http://pan.baidu.com/s/1gf5sFIF)文件)

/* pages/listers/listers.wxss /
/
pages/list-1/list-1.wxss */

/總體主盒子/
.container {
position: relative;
width: 100%;
height: 1220rpx;
background-color: #f0f4f7;
color: #939393;
}

/左側(cè)欄主盒子/
.nav_left{
/設(shè)置行內(nèi)塊級(jí)元素(沒使用定位)/
display: inline-block;
width: 100%;
height: 100%;
/主盒子設(shè)置背景色為灰色/
background: #fff;
text-align: center;
/* position: fixed; /
left: 0;
top: 0;
border-top: 1rpx solid #dedede;
}
/
左側(cè)欄list的item/
.nav_left .nav_left_items{
background: #fff;
/
每個(gè)高30px/
height: 80rpx;
/
垂直居中/
line-height: 80rpx;
/
再設(shè)上下padding增加高度,總高42px/
padding: 15rpx 0;
/
只設(shè)下邊線/
border-bottom: 1px solid #dedede;
/
文字14px/
font-size: 29rpx;
color: #101010;
font-weight:
}
/
左側(cè)欄list的item被選中時(shí)/
.nav_left .nav_left_items.active{
/
背景色變成白色*/
background: #f0f4f7;
color: #ed1000;
}

/右側(cè)欄主盒子/
.scroll_right{
/右側(cè)盒子使用了絕對(duì)定位/
position: fixed;
top: 0;
right: 0;
overflow: auto;
flex: 1;
/寬度75%崇呵,高度占滿缤剧,并使用百分比布局/
width: 75%;
height: 100%;
padding: 20rpx;
box-sizing: border-box;
background-color: #f0f4f7;
border-top: 1rpx solid #dedede;
}
.mink::after{
display:block;content:'';clear:both;
}
.jiul,.jiul image{
width: 100%;
height: 170rpx;
}
.minl{
font-size: 29rpx;
color: #777;
text-align: left;
line-height: 60rpx;
float: left;
background: #f0f4f7;
width: 100%;
/* height: 50rpx; /
}
.mink{
width: 100%;
background: #fff;
height: 100%;
}
/
右側(cè)欄list的item/
.nav_right_items{
/
浮動(dòng)向左/
float: left;
/
每個(gè)item設(shè)置寬度是33.33%/
width: 50%;
/
height: 160rpx; /
text-align: center;
color: #4a4a4a;
background: #fff;
}
.nav_right_items image{
/
被圖片設(shè)置寬高/
width: 60px;
height: 50px;
margin-top: 15rpx;
}
.nav_right_items text{
/
給text設(shè)成塊級(jí)元素/
display: block;
margin-top: 5rpx;
margin-bottom: 10rpx;
font-size: 26rpx;
/
設(shè)置文字溢出部分為.../
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/
* 自定義其他點(diǎn)擊態(tài)樣式類 **/
.other-navigator-hover{
background:#fff;
}

.scroll_left{
width:25%;
height:100%;
background:#fff;
text-align:center;
position: fixed;
left: 0;top: 0
}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馅袁,一起剝皮案震驚了整個(gè)濱河市域慷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汗销,老刑警劉巖犹褒,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異弛针,居然都是意外死亡叠骑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門削茁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宙枷,“玉大人,你說我怎么就攤上這事茧跋∥看裕” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵瘾杭,是天一觀的道長诅病。 經(jīng)常有香客問我,道長粥烁,這世上最難降的妖魔是什么贤笆? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮讨阻,結(jié)果婚禮上芥永,老公的妹妹穿的比我還像新娘。我一直安慰自己钝吮,他們只是感情好埋涧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搀绣,像睡著了一般飞袋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上链患,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天巧鸭,我揣著相機(jī)與錄音,去河邊找鬼麻捻。 笑死纲仍,一個(gè)胖子當(dāng)著我的面吹牛呀袱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播郑叠,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼夜赵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了乡革?” 一聲冷哼從身側(cè)響起寇僧,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沸版,沒想到半個(gè)月后嘁傀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡视粮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年细办,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕾殴。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡笑撞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钓觉,到底是詐尸還是另有隱情茴肥,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布议谷,位于F島的核電站炉爆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卧晓。R本人自食惡果不足惜芬首,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逼裆。 院中可真熱鬧郁稍,春花似錦、人聲如沸胜宇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桐愉。三九已至财破,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間从诲,已是汗流浹背左痢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俊性。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓略步,卻偏偏與公主長得像,于是被迫代替她去往敵國和親定页。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趟薄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • 實(shí)現(xiàn)該功能的思路:通過點(diǎn)擊左側(cè)滑欄的某一項(xiàng),獲取到該元素?cái)y帶的 id 典徊,然后動(dòng)態(tài)傳給右側(cè)滑欄的 scroll-in...
    _vb閱讀 622評(píng)論 0 1
  • 不會(huì)用代碼框杭煎,所以看著有些亂套,宫峦,岔帽,玫鸟,html部分 <!DOCTYPE html> 迅雷看看 ...
    這就是個(gè)帥氣的名字閱讀 1,526評(píng)論 0 0
  • 各種純css圖標(biāo) CSS3可以實(shí)現(xiàn)很多漂亮的圖形导绷,我收集了32種圖形,在下面列出屎飘。直接用CSS3畫出這些圖形妥曲,要比...
    劍殘閱讀 9,506評(píng)論 0 8
  • 午間,阿強(qiáng)從口袋里拿出一枚熱乎乎的咸鴨蛋塞到我手里钦购,在颯颯秋風(fēng)中倍感溫暖檐盟。把玩再三佐餐之,不由得聯(lián)想起鴨蛋的往事…...
    劉秉均閱讀 637評(píng)論 0 0
  • 每天寫一篇文章押桃。 每天堅(jiān)持運(yùn)動(dòng)至少半小時(shí) 每周三本書 每周游泳一次 每周日去圖書館半天 每月攢1000元葵萎。
    angele莉閱讀 201評(píng)論 0 0