当前位置: 首页 > news >正文

uniapp 自定义tab栏切换

1. uniapp 自定义tab栏切换

在这里插入图片描述
在这里插入图片描述

1.1. 实现思路

  在tabbar的页面中,当用户进行左右滑动时,能够自动切换到相应的页面。这个过程可以通过Uniapp中的swiper组件实现也可以通过自定义完成。这里我使用的是原生态开发。

1.2. 实现步骤

1.2.1. view部分展示

  首先,在项目中找到tabbar的页面,在template中添加以下代码
template v-for可以不用写在template模板 。

<template><view class="page-layout"><tab-layout :tabIndex="tabIndex" :tabList="tabList"@sendTabData="receiveTabData"></tab-layout><!--首页--><scroll-view class="container-chat-items"scroll-y :scroll-top='scrollObj.scrollTop':style="{height: scrollObj.scrollHeight }"@scroll="handleScroll"><view class="page-content-layout"><tab-fragment class="title"v-show="tabIndex===0":dataList="dataList"></tab-fragment><tab-fragment2 class="title"v-show="tabIndex===1"></tab-fragment2></view></scroll-view></view>
</template>
<script>

1.2.2. JavaScript 内容

  (1)toplist表示的是tab顶部的内容。
  (2)list中展示的是跳转后的内容。

export default {components: {TabLayout,TabFragment,TabFragment2},data() {return {scrollObj: {scrollHeight: "100vh",scrollTop: 0,scrollOneTop: 0,scrollTwoTop: 0,isTabClick: false,isFirstClick: true,},tabIndex: 0,title: '我是首页',dataList: [{title: "标题45",content: "内容1"},{title: "标题2",content: "内容2"},{title: "标题3",content: "内容3"},{title: "标题4",content: "内容4"},{title: "标题5",content: "内容5"},{title: "标题6",content: "内容6"},{title: "标题7",content: "内容7"},{title: "标题8",content: "内容8"},{title: "标题9",content: "内容9"},{title: "标题10",content: "内容10"}],tabList: [{iconPath: '/static/main/icon_main_main_normal.png',selectedIconPath: '/static/main/icon_main_main_select.png',text: '首页',},{iconPath: '/static/main/icon_main_apply_normal.png',selectedIconPath: '/static/main/icon_main_apply_select.png',text: '审批',}],}},onReady() {pageUtil.setTitleBar('基础信息')},onLoad: function (e) {this.dataList = this.dataList.concat([{title: "标题12",content: "内容12"},{title: "标题22",content: "内容22"},{title: "标题32",content: "内容32"},{title: "标题42",content: "内容42"},{title: "标题52",content: "内容52"},{title: "标题62",content: "内容62"},{title: "标题72",content: "内容72"},{title: "标题82",content: "内容82"},{title: "标题92",content: "内容92"},{title: "标题102",content: "内容102",}])},methods: {/*** 获取tab发送过来的的数据* @param resData*/receiveTabData: function (resData) {let that = this;that.tabIndex = resDataconsole.log("点击tabIndex" + that.tabIndex)that.scrollObj.isTabClick = truelet scrollTop = ""switch (that.tabIndex) {case 0:scrollTop = that.scrollObj.scrollOneTopbreakcase 1:scrollTop = that.scrollObj.scrollTwoTopbreak}setTimeout(() => {that.scrollObj.scrollTop = scrollTop}, 5)},/*** 监听页面滑动*/handleScroll: function (e) {let that = this;//获取滚动条距离顶部的距离let
http://www.lryc.cn/news/600544.html

相关文章:

  • 学习嵌入式的第三十三天-数据结构-(2025.7.25)服务器/多客户端模型
  • 服务器生成图片
  • 四大主流AI Agent框架选型梳理
  • Linux726 raid0,raid1,raid5;raid 创建、保存、停止、删除
  • haproxy配置详解
  • Node.js 模拟 Linux 环境
  • 配置DNS正反向解析
  • Spark-TTS 使用
  • oracle数据库表空间碎片整理
  • 字节跳动正式开源AI智能体开发平台Coze
  • flink查看taskManager日志
  • 【MySQL】深入浅出事务:保证数据一致性的核心武器
  • Qt 与 WebService 交互开发
  • 实现网页访问/接口调用KernelMemory
  • ACOT Buck的dc 精度问题及稳定性
  • HTML5 新特性:MutationObserver 详解
  • 最小生成树:Kruskal与Prim算法
  • C#其他知识点
  • 前端组件梳理
  • mount: /mnt/sd: wrong fs type, bad option, bad superblock on /dev/mmcblk1
  • 嵌入式硬件篇---有线串口通信问题
  • GitHub的免费账户的存储空间有多少?
  • PHP语法高级篇(六):面向对象编程
  • vue子组件关闭自己的方式(事件触发)
  • React入门学习——指北指南(第三节)
  • Netty中DefaultChannelPipeline源码解读
  • 「iOS」——内存五大分区
  • 【C语言】深入理解C语言中的函数栈帧:从底层揭秘函数调用机制
  • RabbitMQ--消息丢失问题及解决
  • 【Vue2】结合chrome与element-ui的网页端条码打印