【经验分享】如何使用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

目录
相关文章
|
资源调度 JavaScript 定位技术
Vue使用高德地图实现点击获取经纬度以及搜索功能
Vue使用高德地图实现点击获取经纬度以及搜索功能
1400 0
|
运维 Linux Windows
【计算巢】幻兽帕鲁服务器如何设置定时备份存档
计算巢针对幻兽帕鲁服务器,提供给了定时备份存档的功能,会在设定的频率下,定时将存档文件备份到目标文件夹下,有助于解决存档丢失和坏档的问题。
4736 1
西门子S7-1200有什么功能特点?应用范围有哪些?CPU型号及模块类型有哪些?
S7-1200是西门子公司新推出的一款面向离散自动化系统和独立自动化系统的低端PLC。S7-1200采用了模块化设计,具备强大的工艺功能,适用于多种场合,可以满足不同的自动化需求。
西门子S7-1200有什么功能特点?应用范围有哪些?CPU型号及模块类型有哪些?
|
3月前
|
人工智能 开发工具 iOS开发
三步配置 narrator-ai-cli,让 AI自动生成电影解说视频
这是一款专为影视解说打造的AI自动化工具,支持WorkBuddy、小龙虾等主流AI助手。只需一句“帮我做《飞驰人生》解说”,即可全自动完成素材搜索、风格匹配、文案生成、配音剪辑全流程,零门槛10分钟出片。(239字)
三步配置 narrator-ai-cli,让 AI自动生成电影解说视频
|
6月前
|
弹性计算 监控 Java
OOM 为何成为开发者的 “噩梦”?
本文聚焦阿里云ECS/ACK环境下的Java OOM问题,系统解析堆内存、元空间、直接内存、栈溢出及线程数超限5类核心异常,提供“日志定位→堆快照分析(MAT/ARMS)→环境监控→精准修复→长期优化”全流程方案,助开发者根治OOM,提升服务稳定性与资源效率。(239字)
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
JavaScript Java 测试技术
基于小程序的奶茶点餐小程序+springboot+vue.js附带文章和源代码设计说明文档ppt
基于小程序的奶茶点餐小程序+springboot+vue.js附带文章和源代码设计说明文档ppt
328 2
|
前端开发 JavaScript 数据处理
React 中展示组件和容器组件
【8月更文挑战第31天】
521 0
|
机器学习/深度学习 数据采集 资源调度
【机器学习】逻辑回归:原理、应用与实践
逻辑回归(Logistic Regression)是一种广泛应用于分类问题的统计学方法,尽管其名称中含有“回归”二字,但它实际上是一种用于解决二分类或多分类问题的线性模型。逻辑回归通过使用逻辑函数(通常为sigmoid函数)将线性模型的输出映射到概率空间,从而预测某个事件发生的概率。本文将深入探讨逻辑回归的理论基础、模型构建、损失函数、优化算法以及实际应用案例,并简要介绍其在机器学习领域的地位和局限性。
1409 2
|
前端开发 JavaScript API

热门文章

最新文章