【经验分享】如何使用scroll-view + swiper制作tabs导航条组件。

简介: 【经验分享】如何使用scroll-view + swiper制作tabs导航条组件。

业务场景中有较多的情况下会用到tabs切换组件,例如某某列表啦,滑动切换,实现起来挺简单,这边按照自己业务内的效果手动撸了个组件。

效果图如下。


组件抛出三个属性进行设置:

currentTab: 当前下标。

color: 文字颜色及导航条颜色

list: 循环tab的列表。支持传入badge字段进行redDot红点设置。


<scroll-view class="scroll-wrapper" scroll-x scroll-with-animation="true" scroll-into-view="item{{currentTab < 4 ? 0 : currentTab - 3}}">
  <view class="navigate-item" id="item{{index}}" a:for="{{list}}" a:key="index" data-index="{{index}}" onTap="handleClick">
    <view class="names {{currentTab === index ? 'active' : ''}}"  style="color: {{currentTab === index ? color : ''}}">{{item.name}}
      <text class="badge" a:if="{{item.badge}}">{{item.badge}}</text>
    </view>
    <view class="currtline {{currentTab === index ? 'active' : ''}}" style="background: {{currentTab === index ? color : ''}}"></view>
  </view>
</scroll-view>
<swiper indicator-dots="{{false}}" onChange=“handleSwiper” current="{{currentTab}}">
  <block a:for="{{list}}" a:key="*this">
    <swiper-item>
      <view class="swiper-item">第{{index + 1}}页</view>
    </swiper-item>
  </block>
</swiper>

至于组件JS

Component({
  props: {
    currentTab: 0, // 当前下标
    list: [], // 导航条列表, redDot配置需加入badge字段。如: tabList: [{ name: '有趣好玩', badge: 20}]
    color: '#00cc88' // 文字及导航条下标
  },
  methods: {
    // 导航条切换
    handleClick(e) {
      let currentTab = e.currentTarget.dataset.index
      this.setData({
        currentTab
      })
    },
    // 滑动swiper切换导航条
    handleSwiper(e) {
      let {
        current,
        source
      } = e.detail
      if (source === 'autoplay' || source === 'touch') {
        const currentTab = current
        this.setData({
          currentTab
        })
      }
    }
  },
});

至于引用的地方就更简单了:

json引用组件配置就不说了,

页面操作如下:

<tabs list="{{tabList}}" color="blue"/>



以上就是一个简单的tabs导航条联动切换效果,有问题欢迎评论指正,代码可自行修改新增属性。

最后放上代码片段:访问运行查看效果

https://pen.mini-code.com/s/8f444464-c2e5-4350-8289-45be27497701

目录
相关文章
|
存储 前端开发 安全
常见的前端加密方式都有哪些?
【4月更文挑战第19天】本文介绍了前端加密的四种常见方法:哈希加密、对称加密、非对称加密和混合加密。哈希加密适用于密码存储,但存在哈希碰撞风险;对称加密速度快,适合安全通信;非对称加密更安全,但速度慢;混合加密结合两者优点,常用于 SSL/TLS。前端加密是数据安全的重要一环,但需与后端安全措施配合以构建全面防护体系。示例代码展示了 JavaScript 中的 SHA-256、AES 和 RSA 加密。
1399 7
|
12月前
|
前端开发 小程序
扩展uview复选组件库支持自定义图片+自定义内容
扩展uview复选组件库支持自定义图片+自定义内容
391 6
|
小程序
微信小程序 | 吐血整理的日历及日程时间管理
微信小程序 | 吐血整理的日历及日程时间管理
3960 0
微信小程序 | 吐血整理的日历及日程时间管理
|
敏捷开发 安全 测试技术
敏捷项目管理的原则、好处、工具、提示以及何时进行转换
敏捷项目管理的原则、好处、工具、提示以及何时进行转换
|
小程序 IDE Serverless
【经验分享】支付宝小程序serverless云开发拓荒
【经验分享】支付宝小程序serverless云开发拓荒
312 6
|
JSON 小程序 数据格式
【经验分享】支付宝小程序lottie动画尝鲜
【经验分享】支付宝小程序lottie动画尝鲜
430 6
|
小程序
【经验分享】如何生成支付宝小程序scheme链接
【经验分享】如何生成支付宝小程序scheme链接
3597 2
|
小程序 前端开发 IDE
【经验分享】支付宝小程序订阅消息功能实操(前端篇)|江海计划
【经验分享】支付宝小程序订阅消息功能实操(前端篇)|江海计划
1235 7
|
小程序 Android开发 iOS开发
【经验分享】如何手撸一个switch组件。
【经验分享】如何手撸一个switch组件。
162 7
|
小程序 JavaScript 前端开发
【每周一个小技巧】支付宝小程序如何跳转到支付宝搜索页面
【每周一个小技巧】支付宝小程序如何跳转到支付宝搜索页面
313 7