订单管理,效果如下,上面的nav,两边的内容随点击也一起滚动
wxml
<scroll-view scroll-x class="nav" scroll-left="{{scrollLeft}}" scroll-with-animation> <view class="bigNavEach"> <view class="navEach" wx:for="{{navList}}" wx:key="index"> <view class="navName" bindtap="navChange" data-index="{{index}}">{{item.name}}</view> <view class="navBot {{item.istrue?'navActive':''}}"></view> </view> </view> </scroll-view> <swiper class="bigswiper" current="{{nowCurrent}}" bindchange="swiperChange"> <swiper-item wx:for="{{navList}}" wx:key="index"> <view style="width: 100%;height: 100%;background: skyblue;">{{item.name}}</view> </swiper-item> </swiper>
js
data: { navList:[ {name:'待确定',istrue:true}, {name:'待付款',istrue:false}, {name:'待提车',istrue:false}, {name:'待过户',istrue:false}, {name:'已完成',istrue:false}, {name:'竞拍记录',istrue:false}, ],//头部导航 nowNavIndex:0,//导航当前激活的下标 scrollLeft:0,//头部横向滚动位置 nowCurrent:0,//swiper当前所在滑块 }, onLoad(options) { //点击外面哪个进来就跳转到第几个 let index = parseInt(options.index); this.navMove(index); }, //导航切换 navChange(e){ let index = e.currentTarget.dataset.index;//新 this.navMove(index); }, //导航动 navMove(e){ let index = e; let oldIndex = this.data.nowNavIndex;//旧 let aa = 'navList['+oldIndex+'].istrue'; let bb = 'navList['+index+'].istrue'; this.setData({ [aa]:false, [bb]:true, nowCurrent:index }) this.data.nowNavIndex = index; //当点击右边几个的时候就往有移动50 //如果nav里的文字过多可以调整scrollLeft的值 if(index >= 3 && this.data.scrollLeft <= 0){ this.setData({ scrollLeft:50 }) } //当点击左边几个的时候就往左移动到最左侧 if(index <= 2 && this.data.scrollLeft > 0){ this.setData({ scrollLeft:0 }) } }, //滑动swiper切换 swiperChange(e){ this.navMove(e.detail.current); },
wxss
.nav{ height: 100rpx; width: 100%; overflow: hidden; } .bigNavEach{ white-space:nowrap; } .navEach{ display: inline-block; height: 100%; padding: 0 20rpx; font-size: 34rpx; color: #333; } .navName{ height: 94rpx; line-height: 94rpx; } .navBot{ height: 6rpx; width: 80%; margin-left: 10%; background-color: #fff; } .navActive{ background-color: #e73737; } .bigswiper{ position: absolute; left: 0; top: 100rpx; width: 100%; height: calc(100% - 100rpx); }