
index.wxml
<view class="container">
  <view class="swiper-tab">
    <scroll-view scroll-x="true" show-scrollbar="false" scroll-with-animation="true" scroll-left="{{navScrollLeft}}" style="width: 100%;white-space: nowrap;">
      <block wx:for="{{provList}}" wx:key="i">
          <view class="swiper-tab-list {{currentTab==index ? 'on' : ''}}" data-current="{{index}}" bindtap="swichNav">{{item.name}}</view>
      </block>
    </scroll-view>
  </view>
  <swiper current="{{currentTab}}" class="swiper-box" duration="300" bindchange="bindChange"  style="height: {{tabsheight}};">
    <block wx:for="{{cityList}}" wx:for-item="city" wx:key="n">
      <swiper-item>
        <view class="list list{{index}}">
          <block wx:for="{{city}}" wx:key="u">
            <view class="city-item">
              <image class="img" src="{{item.img}}"></image>
              <view class="text">{{item.city}}</view>
            </view>
          </block>
        </view>
      </swiper-item>
    </block>
  </swiper>
<view>底部</view>
</view>
index.js
Page({
  data: {
    currentTab:0,
    tabsheight:'450px',
    provList:[
      {"name":"江苏"},
      {"name":"浙江"},
      {"name":"上海"},
      {"name":"河南"},
      {"name":"河北"},
      {"name":"重庆"},
      {"name":"天津"},
      {"name":"广东"},
    ],
    cityList:[
      [{"img":"/imgs/default.jpg","city":"南京"},
      {"img":"/imgs/default.jpg","city":"苏州"},
      {"img":"/imgs/default.jpg","city":"南通"},
      {"img":"/imgs/default.jpg","city":"无锡"}],
      [{"img":"/imgs/default.jpg","city":"杭州"},
      {"img":"/imgs/default.jpg","city":"宁波"},
      {"img":"/imgs/default.jpg","city":"温州"}],
      [{"img":"/imgs/default.jpg","city":"上海"}],
      [{"img":"/imgs/default.jpg","city":"郑州"},
      {"img":"/imgs/default.jpg","city":"开封"},
      {"img":"/imgs/default.jpg","city":"洛阳"},
      {"img":"/imgs/default.jpg","city":"周口"}],
      [{"img":"/imgs/default.jpg","city":"石家庄"},
      {"img":"/imgs/default.jpg","city":"唐山"},
      {"img":"/imgs/default.jpg","city":"秦皇岛"}],
      [{"img":"/imgs/default.jpg","city":"重庆"}],
      [{"img":"/imgs/default.jpg","city":"天津"}],
      [{"img":"/imgs/default.jpg","city":"广州"},
      {"img":"/imgs/default.jpg","city":"深圳"}]
    ]
  },
  
  tabsHeight(element){
    let that = this;
    let query = wx.createSelectorQuery();
    query.select(element).boundingClientRect(function(rect){
        that.setData({
            tabsheight:rect.height + 'px'
        });
    }).exec();
  },
  swichNav: function( e ) {
      var that = this;
      if( this.data.currentTab === e.target.dataset.current ) {
          return false;
      } else {
          that.setData( {
              currentTab: e.target.dataset.current,
              navScrollLeft:e.target.dataset.current >= 4 ? ((e.target.dataset.current) * 60) : 0
          })
      }
      that.tabsHeight('.list'+e.target.dataset.current);
  },
  bindChange: function( e ) {
      var that = this;
      that.setData( {
          currentTab: e.detail.current,
          navScrollLeft:e.detail.current >= 4 ? ((e.detail.current) * 60) : 0
      });
      that.tabsHeight('.list'+e.detail.current);
  },
})
index.wxss
.swiper-tab{
  width: 100%;
  text-align: center;
  line-height: 80rpx;
}
.swiper-tab-list{
  font-size: 30rpx;
  display: inline-block;
  min-width: 18%;
  max-width: 18%;
  margin: 0 1%;
}
.on{ color: black;
  font-weight: bold;
  border-bottom: 4rpx solid black;
}
.swiper-box{
  display: block;
  height: 700px;
  width: 100%;
  margin-top: 10px;
}
.city-item{
  width: 100%;
  display: flex;
  flex-flow: row nowrap;
  margin-bottom: 10px;
}
.img{
  width: 40%;
  height: 100px;
}
.text{
  width: 60%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 24px;
  border: 1px solid #ddd;
  box-sizing: border-box;
}
来源:https://blog.csdn.net/weixin_43976056/article/details/121579534