uni-app--tabs切换swiper

2023-05-16

父组件

<template>
	<view>
		<tabs-swiper :TabsList='TabsList' :tabIndex='tabIndex' :tabData="tabData" @changTab="changTab" style="min-height: 90rpx;" ></tabs-swiper>
		
		<swiper class="swiper-box" :current="tabIndex" @animationfinish="animationfinish">
			<swiper-item class="swiper-item">
				<scroll-view scroll-y class="scroll-item">
					<view style="height: 2000rpx;background-color: #1CBBB4;">1
					</view>
				</scroll-view>
			</swiper-item>
			
			<swiper-item class="swiper-item" v-for="(item,index) in list">
				<scroll-view scroll-y class="scroll-item">
					<view :style="{height:'2000rpx',backgroundColor:`${item.color}`}">
						{{item.count}}
					</view>
				</scroll-view>
			</swiper-item>
		</swiper>
	</view>
</template>

<script>
import tabsSwiper from "./plugin/u-tabs-swiper.vue"
export default {
	components:{ tabsSwiper },
	data() { 
		return {
			TabsList: [{name: '待付款'},{name: '待发货'},{name: '待收货'},{name: '待评价',count: 12},{name: '待确认',count: 12}],
			tabIndex:0,
			tabData:{
				color:'#aa0000',
				Num:4,
			},
			scrollLeft:0,
			list:[{count:2,color:'pink'},{count:3,color:'green'},{count:4,color:'pink'},{count:5,color:'black'}]
		}
	},
	methods: {
		changTab(index){
			this.tabIndex = index
		},
		//  swiper滑动时触发   这里的{ detail: { current } }为解构,获取到事件源中的detailcurrent
		animationfinish({ detail: { current } }){ 
			 this.tabIndex = current
		}
	}
};
</script>

<style scoped lang="scss">
.swiper-box {
	padding-top: 90rpx;
	height: 100vh;
	background-color: #E8F4D9;
	.swiper-item {
		.scroll-item{
			height: 100%;width: 100%;
		}
	}
}
</style>

子组件

<template>
	<scroll-view scroll-x class="u-scroll-view" :scroll-left="scrollLeft">
		<view class="u-tabs-item"  v-for="(item,index) in TabsList" :key="index"
		 @tap="changTab(index)" 
		 :style="{ 'color':index==tabIndexQ ? `${tabData.color}` : 'black',
		  'borderBottom': index==tabIndexQ ? `1rpx solid ${tabData.color}` : '0rpx solid black',
		  'width': `calc(100% / ${tabData.Num})`}">
			{{ item.name }}
		</view>
	</scroll-view>
</template>
<script>
	/*
	* TabsList 标签数组
	* tabIndex swiper滑动时对应上tab选中样式
	* tabData { color:选中tab颜色 , Num: 可见标签数 }
	* @changTab 点击tabs对应上相应swiper-item
	*/
	export default{
		props:{
			TabsList: {
				type: Array,
				default () {
					return [];
				}
			},
			tabIndex:{
				type:Number,
				default () {
					return 0;
				}
			},
			tabData:{
				type:Object,
				default(){
					return {
						color:'#F0AD4E',
						Num:4
					}
				}
			}
		},
		// 当父组件通过滑动swiper改变下标传替给子组件时,子组件的值不会获取到新值,可通过监听事件重新赋值获取
		watch:{tabIndex(){ this.tabIndexQ = this.tabIndex }},  
		data(){
			return{
				tabIndexQ:this.tabIndex,
				scrollLeft: 0, // 滚动scroll-view的左边滚动距离  
				zIndex: 1,
			}
		},
		
		methods:{
			// tab切换 
			changTab(index){
				this.tabIndexQ = index
				// 当前下标的前下标数 * (可使用窗口宽度/ 可见标签数)
				this.scrollLeft = (this.tabIndexQ - 1) * (this.windowWidth / this.tabData.Num)
				this.$emit('changTab',index,this.scrollLeft)
			},
		}
	}
</script>

<style scoped lang="scss">
// .color-orger{ color: #F0AD4E;border-bottom: 1rpx solid #F0AD4E; }
.u-scroll-view {
	position: fixed;
	width: 100%;
	top: 0;
	z-index: 99;
	box-shadow: 0 1rpx 6rpx rgba(0, 0, 0, 0.1);
	text-align: center;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	transition: all 3s;
	background-color:white;
	
	.u-tabs-item {
		display: inline-block;
		height: 90rpx;
		line-height: 90rpx;
		// margin: 0 10rpx;
		// padding: 0 20rpx;  
	}
}
</style>
<script>
import Vue from 'vue'
export default {
	onLaunch: function() {
		uni.getSystemInfo({
			success: function(e) {
				Vue.prototype.windowWidth = e.windowWidth 
			}
		})
	},
}
</script>

待续。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uni-app--tabs切换swiper 的相关文章

  • 在 IntelliJ IDEA 中关闭选项卡时更改为最近使用的选项卡?

    当我关闭 IntelliJ 中的编辑器选项卡时 接下来会打开直接出现在其右侧的选项卡 相反 我宁愿打开最近使用的选项卡 例如 如果我打开这些选项卡 Foo java currently viewed Bar java 然后我使用CMD SH
  • Microsoft Edge:本地/会话存储无法在新选项卡中工作

    我正在开发一个托管在 Azure 中的 Web 应用程序 我在 MS Edge 版本 20 10525 0 0 上尝试过 但遇到了以下问题 我有一个带有 target blank 的链接 可以在新选项卡中打开页面 在该链接的点击事件中 我将
  • android viewpager with tablayout - 如何在选项卡内添加其他片段?

    so i have the classic viewpager in a tablayout that looks something like this 我的 viewPagerAdapter 类如下所示 公共类 HomePagerAda
  • 将 ViewPager 与不带 actionBar 的选项卡一起使用

    我正在使用名为EffectiveNavigation 的谷歌示例来创建带有选项卡的ViewPager 问题是在清单中 对于我的主要活动 我设置了 android theme android style Theme Holo NoAction
  • 关闭按钮仅适用于 Qt 中的某些选项卡

    我正在使用 Qt 完成大学作业 并且我想使用QTabWidget显示一个聊天窗口 就像Pidgin s https www pidgin im 我想让 群聊 选项卡始终打开且无法关闭 而其余 私人频道 选项卡可关闭 QTabWidget s
  • 清除 Android 浏览器历史记录

    我正在为客户编写一个应用程序 该应用程序将有多个可供客户查看和使用的设备 他们希望能够定期清除浏览器历史记录 这样 如果客户打开浏览器访问不适当的网站 下一个客户就不会看到此内容 我目前正在使用它来清除历史记录和搜索 Browser cle
  • 使用不同的锚点重新加载页面

    刚刚被一个问题困住了 我有一个带有 Jquery UI 选项卡的页面 通过向链接添加哈希标签 可以从不同的页面访问每个选项卡 并使用我需要的选项卡加载页面 但是 我还需要访问同一页面中的不同选项卡 我想出的是添加目标 parent 到带有哈
  • Chrome 扩展:webRequest 重定向到现有选项卡,无需打开新选项卡

    当用户打开某个页面时 我想在打开新选项卡之前在现有选项卡中打开该页面 我尝试过 webRequest chrome webRequest onBeforeRequest addListener function details chrome
  • 如何覆盖 Material-ui 的选项卡选择颜色?

    我正在使用 Materialui tabs 主题构建 React 16 13 0 应用程序 https material ui com api tab https material ui com api tab 我在我的组件中创建了这些样式
  • 从另一个页面链接到特定选项卡

    我有一个包含 3 个选项卡的表单 div class tabs ul class tabset li a class active span Shirts span a li li a href span Jeans span a li l
  • 如何记住终端中多个选项卡的会话? (类似于 FF 会话管理器)

    一个人如何 撤消关闭选项卡 在终端中 与它非常相关的是 是否有可能记住终端中的选项卡会话 我的意思是 与 Firefox 类似 如果我关闭特定终端窗口中的所有选项卡 第二天如何打开相同的选项卡 对于像我这样经常使用多个选项卡的人来说 记住终
  • 创建一个用于切换 jQuery 选项卡的“下一步”按钮

    如何创建一个滚动到下一个 jQuery 选项卡的按钮 我希望选项卡中有一个下一个按钮 可以滚动到下一个选项卡 有点像分步教程 如何才能做到这一点 到目前为止我的代码如下 HTML div ul li a href fragment 1 sp
  • 选项卡式导航。 Jquery 和 CSS 问题

    前面讨论过的脚本问题 Here https stackoverflow com questions 7169724 jquery to detect identical class and text for tab navi 基本上我的 h
  • 向 WooCommerce 单一产品页面添加多个选项卡

    我正在尝试向 WooCommerce 添加三个自定义选项卡 我有下面的代码 其中两个显示 但由于某种原因 属性描述选项卡没有显示在页面上 不仅 数量定价 选项卡不显示其描述 我尝试将代码的不同部分移动到不同的位置 并且检查了代码是否有错误或
  • 有没有一个 vim 命令可以重新定位选项卡?

    如何更改当前选项卡的位置 顺序Vim 例如 如果我想将当前选项卡重新定位为第一个选项卡 您可以使用以下命令重新定位选项卡 tabm使用相对或零索引绝对参数 绝对 将选项卡移至位置 i tabm i 相对的 将选项卡 i 位置向右移动 tab
  • 如何设置带有选项卡的多个滑动视图的默认选项卡?

    我真的被困住了 我在主要活动中使用选项卡进行了四个滑动视图 但我想要的是当用户打开应用程序时 它会自动显示第二个选项卡而不是第一个选项卡 这是我的 MainActivity java public class MainActivity ex
  • 在新选项卡或窗口中打开链接[重复]

    这个问题在这里已经有答案了 是否可以开一个a href链接在新选项卡而不是同一选项卡中 a href http your url here html Link a 您应该添加target blank and rel noopener nor
  • 使所有打开的文档选项卡可见

    我想查看我在 Visual Studio 中打开的所有文件或文档 我不希望它们自动隐藏或溢出时隐藏 我怎样才能实现它 执行此操作的内置选项之一 使用固定选项卡 http dailydotnettips com 2016 01 21 pers
  • 从 Activity 调用选项卡式片段方法

    我有一项活动由三个片段组成 这些片段使用使用 PagerAdapter 的操作栏选项卡 我想要做的是从主活动访问活动选项卡式片段中的方法 我已经尝试了下面的代码 但这只是将片段返回为空 所以我猜它无法在选项卡中找到它 NPListFragm
  • 如何隐藏 URL 中的 ID

    我以前在 Stack Overflow 上见过这类问题 但没有一个真正有帮助 我也用谷歌搜索过 但没有骰子 我想知道如果用户单击选项卡本身是否可以隐藏 URL 中的 ID 这是网页 www planet nu dev new experia

随机推荐

  • Jmeter性能测试(6)--元件的作用域与执行顺序

    jmeter xff08 六 xff09 元件的作用域与执行顺序 jmeter是一个开源的性能测试工具 xff0c 它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系 xff0c 那么随着它们的顺序和所在的域不同 xff0c 它们
  • sql,逻辑漏洞,xss,反序列化思维导图

  • Arduino MAX30102脉搏心率传感器使用教程

    最近闲来无事 xff0c 得到了一块MAX30102 xff0c 手头刚好有多余的Arduino控制板 xff0c 就跑了个官方的案例 xff0c 发现测出来的脉搏和心率还是挺准的 xff0c 三星手机用过这个系列的芯片 xff0c 但是有
  • 两种方法用IDEA创建一个Servlet程序 新手教程详解

    1 Servlet 是什么 xff1f Java Servlet 是运行在 Web 服务器或应用服务器上的程序 xff0c 它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层 2
  • reduce()累计器理解与使用实例

    关于reduce reduce 语法 xff1a arr reduce callback accumulator currentValue index array initialValue arr reduce accumulator cu
  • {}与Object.create(null)

    var one 61 创建的对象带有 proto 下面有一些方法与属性 xff0c 这便是js的原型链继承 xff0c 继承了object的方法和属性 xff1b 故在遍历对象时 xff0c 会遍历原型链上的属性 xff0c 带来性能上的损
  • uni-app 全局变量机制

    getApp globalData 全局变量机制 在App vue中 export default globalData text 39 text 39 在App vue中调用 this globalData text在onLaunch生命
  • vue3动态注册路由

    在vue cil2中 xff0c 我们可以通过webpack中require context这个api实现工程自动化 xff0c 而在vue cil3里vite替代了webpack xff0c 节省了webpack冗长的打包时间的同时我们也
  • try{}catch(res){}、throw(exception)、new Error()

    1 try catch res try 中的代码出现错误异常时 xff0c 系统会将异常信息封装到error对象中 xff0c 传递给catch res xff0c 包含res message res name等 EvalError eva
  • new Map()

    1 new Map let data 61 new Map data set key value 添加一个新建元素到映射 Map 1 key 61 gt value data get key 返回映射中的指定元素 data has key
  • Proxy代理

    Proxy用于修改某些操作的默认行为 xff0c 等同于在语言层面做出修改 xff0c 所以属于一种 元编程 语法 xff1a let proxy 61 new Proxy target handler target 所要拦截的目标对象ha
  • Jmeter性能测试(7)--定时器

    jmeter xff08 七 xff09 定时器 jmeter提供了很多元件 xff0c 帮助我们更好的完成各种场景的性能测试 xff0c 其中 xff0c 定时器 xff08 timer xff09 是很重要的一个元件 xff0c 最新的
  • oninput完美限制输入正整数

    oninput完美限制输入非0正整数 注意vue中需要 64 input进行绑定 方法一 64 input 61 34 if this value length 61 61 1 this value 61 this value replac
  • 行内存放数据属性data-id

    data 61 39 data 39 为行内存放数据的属性 xff0c 可通过事件源中的currentTarget dataset获取data 存放的值 另外css可通过 data 放置的标签名 data 61 39 data 39 设置
  • js常用封装方法

    span class token comment 生成随机数 64 length 指定长度 return 随机数 span span class token keyword export span function span class t
  • 计数器组件

    涉及事件 64 longpress 长按时触发 xff0c 64 touchend 手指从屏幕上离开时触发 1 计数器为文本标签的子组件 lt template gt lt view class 61 34 counter box 34 g
  • rich-text 富文本

    rich text 富文本 普通的text文件不能显示格式 xff0c 富文本格式rtf文件可以显示出很多格式信息 xff0c 比如可以在一个文本包含不同颜色 不同字号的文本 官方 lt rich text nodes 61 34 cont
  • uni-app实现全局组件注册

    uni app 全局注册组件三种方式 1 传统vue组件需要创建 引用 组成三个步骤 2 在page json中对应page设置 34 globalStyle 34 34 autoscan 34 true 和pages同级 3 HBuild
  • Vue--混入(Mixin)

    Vue 混入 Mixin 当不同组件有相同功能时 xff0c 不必重复定义属性和方法 xff0c 可使用vue中的混入 Mixin 来分发 Vue 组件中的可复用功能 一个 mixin 对象可以包含任意组件选项 xff0c 即data me
  • uni-app--tabs切换swiper

    父组件 span class token operator lt span template span class token operator gt span span class token operator lt span view