uniapp 滚动tab导航开发

 index.vue

<template>
	<view>
		
		<!-- 原顶部组件 -->
		<view class="uni-tab-bar">
			<scroll-view scroll-x class="uni-swiper-tab" >
				<block v-for="(tab,index) in tabBars" :key="tab.id">
					<view class="swiper-tab-list" :class="{'active':tabIndex==index}"  @tap="tabtap(index)">
						{{tab.name}}
						<view class="swiper-tab-line"></view>
					</view>
				</block>
			</scroll-view>
		</view> 
		
		<!-- 引入顶部导航组件 -->
		 <!-- <swiper-tab-head :tabBars="tabBars" :tabIndex="tabIndex" @tabtap="tabtap"></swiper-tab-head> -->
		
		
		<view class="uni-tab-bar" >
		<swiper class="swiper-box" v-bind:style="{height:swiperheight+'rpx'}" :current="tabIndex" @change="tabChange">
			<swiper-item v-for="(items,index) in newslist" :key="index">
				<scroll-view scroll-y class="list">	
							<!-- 图文列表 -->
						 <block v-for="(item, index1) in items.list" :key="index1">
						 	<index-list :item="item" :index="index1"></index-list>	
						 </block> 		
							<!-- 上拉加载-->
						<view class="load-"more></view>
				</scroll-view>
			</swiper-item>
		</swiper>
		</view> 
		
		

		 <!-- <block v-for="(item, index) in list" :key="index">
			<index-list :item="item" :index="index"></index-list>
		</block> -->
	</view>
</template>

<script>
import indexList from "../../components/index/index-list.vue";
import swiperTabHead from "../../components/index/swiper-tab-head.vue";
export default {
		components:{
			indexList,
			swiperTabHead
		},
		data() {
			return {
				swiperheight:1350,
				tabIndex:0,
				tabBars: [
					{name: '关注',id: 'guanzhu'}, 
					{name: '推荐1',id: 'tuijian'},
					{name: '体育2',id: 'tiyu'}, 
					{name: '推荐3',id: 'tuijian'},
					{name: '体育4',id: 'tiyu'},
					{name: '推荐5',id: 'tuijian'},
					{name: '体育6',id: 'tiyu'},
					{name: '热点',id: 'redian'}
				],
				
				newslist:[
					{   
						loadtext:"上拉加载更多",
						list:[
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
						],
					},
					
					
					{
						loadtext:"上拉加载更多",
						list:[
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
						],
					},
					
					
					
					{
						list:[
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
							{
								userpic:"../../static/demo/datapic/10.jpg",
								username:"昵称",
								isgaunzhu:true,
								title:"这是一个",
								type:"img", //img:图文  video:视频类型
								titlepic:"../../static/demo/datapic/11.jpg", //封面图
								infonum:{
									index:1   ,//0未订   1顶   2踩
									dingnum:11,
									cainum:12,
								},		
								commentnum:10,//评论
								sharenum:10,    //分享
							},
						],
					}
				],		
						
				
				list:[
					//图片样式
					{  
						userpic:"../../static/demo/datapic/10.jpg",
						username:"昵称",
						isgaunzhu:true,
						title:"这是一个标题",
						type:"img", //img:图文  video:视频类型
						titlepic:"../../static/demo/datapic/11.jpg", //封面图
						infonum:{
							index:1   ,//0未订   1顶   2踩
							dingnum:11,
							cainum:12,
						},		
						commentnum:10,//评论
						sharenum:10,    //分享
					},
					//视频样式
					{
						userpic:"../../static/demo/datapic/10.jpg",
						username:"昵称",
						isgaunzhu:true,
						title:"这是一个标题",
						type:"video", //img:图文  video:视频类型
						titlepic:"../../static/demo/datapic/11.jpg", //封面图
						playnum:200000,
						long:"2:47",
						infonum:{
							index:0   ,  //0未顶    1顶    2踩
							dingnum:11,
							cainum:12,
						},		
						commentnum:10,  //评论
						sharenum:10,    //分享
					}
				]
			}
		},
		onLoad(){
			uni.getSystemInfo({
				success:(res)=>{
					let height=res.windowHeight-rpx(100);
					console.log(height);
					console.log(res.screenHeight);
					this.swiperheight=height;
					       
				}
			})
		},
	
	 	methods: {
		 	//点击事件
			 tabtap(index){
				this.tabIndex=index
			},	 		
			//滑动事件
			tabChange(e){	
				 this.tabIndex=e.detail.current;			
			}
		}
	}	 
</script>

<style>
	.uni-swiper-tab{
		border-bottom:2rpx solid #EEEEEE ;
	}
	.swiper-tab-list{
		
		font-weight: bold;
	}
	.uni-tab-bar {
		color: #343434;
		
	}
	.active .swiper-tab-line {
		border-bottom: 8rpx solid #fede33;
		width: 70rpx;
		margin: auto;  /* 居中 */
		border-radius: 20rpx;
	} 
</style>

 

 

组件:swiper-tab-head.vue

<template>
	<view class="uni-tab-bar">
		<scroll-view scroll-x class="uni-swiper-tab" >
			<block v-for="(tab,index) in tabBars" :key="tab.id">
				<view class="swiper-tab-list" :class="{'active':tabIndex==index}"  @tap="tabtap(index)">
					{{tab.name}}
					<view class="swiper-tab-line"></view>
				</view>
			</block>
		</scroll-view>
	</view> 
	
</template>

<script>
	export default {
		//传入数据
		props:{
			tabBars:Array,
			tabIndex:Number,
			
		},
		methods:{
			//点击事件  子组件传到父组件
			tabtap(index){
				/* this.tabIndex=index; */
				this.$emit('tabtap',index);
			},
		}
	}
</script>

<style>
	
/* 	样式已经导入组件 */
  /* .uni-swiper-tab{
		border-bottom:2rpx solid #EEEEEE ;
	}
	.swiper-tab-list{
		
		font-weight: bold;
	}
	.uni-tab-bar {
		color: #343434;
		
	}
	.active .swiper-tab-line {
		border-bottom: 8rpx solid #fede33;
		width: 70rpx;
		margin: auto;  /* 居中 */
		/* border-radius: 20rpx; */
/* 	} */
	/* */ 
</style>

未解决上下滑动高度问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值