微信小程序-scroll-view滚动到指定位置(楼梯效果)和循环嵌套加载数据

效果如图:
这里写图片描述
代码如下:
wxml

//使用循环嵌套data数据格式写对即可
<scroll-view class="left" scroll-y>   
    <view wx:for="{{left}}" class="leftlist {{index==_click?'yes':''}}" data-i="{{index}}" bindtap="tap">
      {{item.txt}}
    </view>
  </scroll-view>

<scroll-view class="right" scroll-y bindscroll="scroll" scroll-into-view="{{toView}}">
    <view id="{{item.id}}"  wx:for="{{right}}">

      <view class="title">
        <text class="line"></text>
        {{item.txt}}
        <text class="line"></text>
      </view>  

      <view class="li" wx:for="{{item.li}}">
        <image src="{{item.src}}"></image>
        <text class="name">{{item.name}}</text>
      </view>
    
    </view>
  </scroll-view>

js

Page({
  data: {
    toView: 'red1',
    _click:0,
    left: [{ txt: '新品', id: 'new' }, { txt: '手机', id: 'phone' }, { txt: '电视', id: 'mv' }, { txt: '电脑', id: 'computer' }],
    right: [
      { txt: '新品', id: 'new',li: [{ src: '../../assets/images/max1.jpg', name: '小米noto' }, { src: '../../assets/images/max1.jpg', name: '小米mix' }, { src: '../../assets/images/max3.jpg', name: '小米5c' }, { src: '../../assets/images/max2.jpg', name: '小米notp' }, { src: '../../assets/images/max2.jpg', name: '小米note5' }, { src: '../../assets/images/max2.jpg', name: '小米6' }]}, 
      { txt: '手机', id: 'phone',li: [{ src: '../../assets/images/max2.jpg', name: '小米6s' }, { src: '../../assets/images/max3.jpg', name: '小米max' }, { src: '../../assets/images/max2.jpg', name: '小米5s' }, { src: '../../assets/images/max1.jpg', name: '小米li' }, { src: '../../assets/images/max3.jpg', name: '小米4' }, { src: '../../assets/images/max1.jpg', name: '小米max' }]}, 
      { txt: '电视', id: 'mv', li: [{ src: '../../assets/images/max3.jpg', name: '小米6' }, { src: '../../assets/images/max2.jpg', name: '小米mix' }, { src: '../../assets/images/max1.jpg', name: '小米7s' }, { src: '../../assets/images/max3.jpg', name: '小米2' }, { src: '../../assets/images/max1.jpg', name: '小米note7' }, { src: '../../assets/images/max3.jpg', name: '小米8' }] }, 
      { txt: '电脑', id: 'computer', li: [{ src: '../../assets/images/max1.jpg', name: '小米2' }, { src: '../../assets/images/max1.jpg', name: '小米mix' }, { src: '../../assets/images/max2.jpg', name: '小米max' }, { src: '../../assets/images/max1.jpg', name: '小米6' }, { src: '../../assets/images/max3.jpg', name: '小米note' }, { src: '../../assets/images/max1.jpg', name: '小米max' }] }]
  },

  scroll: function (e) {
    console.log(e)//右侧列表滑动-左侧列表名称样式跟着改变,然而我不会写,搁置中,谁会告诉我,谢谢!
  },
  tap: function (e) {  
    var j = parseInt(e.currentTarget.dataset.i);
    this.setData({
      toView: this.data.left[j].id,//控制视图滚动到为此id的<view>
      _click:j                     //控制左侧点击后样式
        })
  },
})

wxss

page{border-top:1px solid #f6f6f6;}

.left{
  height:100%;
  width: 19%;
  display: inline-block;
  background:#fff;
  text-align:center;
  border-right:1px solid #eee;
  }
.leftlist{
  font-size:12px;
  padding:10px;
  }

.right{
  height:100%;
  width: 80%;
  display: inline-block;
  background:#fff;
  text-align:center;
  }

.line{
  width:15px;
  height:1px;
  background:#ddd;
  display:inline-block;
  vertical-align:super;
  margin:0 15px;
}

.li{ 
  height:10%;
  width:30%;
  display:inline-block;
  text-align:center;
}

.li image{width:60px;height:60px;}

.li .name{
  font-size:12px;
  display:block;
  color:#888;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}

.title{padding:20px 0;}
.yes{color: #f99;font-size: 14px;}

友情提示:
一、左侧点击样式改变:
利用自身index与点击的元素的index比较。
data-i=“{{获取当前index传给_click保存}}”,
class=“leftlist {{index==_click?‘yes’:’’}}”,
此处index是自身的,如果自身和点击的一致就添加,yes类名,否侧滞空清除yes样式。

二、点击左侧,右侧跟随:
利用
scroll-into-view="{{id}}",
视图会滚动到id为此id的view标签。我是直接从data数据里取得id,也可以直接获取点击元素id。

三、循环嵌套:data数据格式写对,按照官方文档就行。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘斩仙的笔记本

富贵险中求

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值