uni-app实现滑动切换效果

在对于uni-app框架了解之后,今天就实现一个滚动切换tab效果,这个很常见的一个效果,最后封装成一个组件,便于以后使用,写这个需要引入uni官方提供的uni.css样式,用到了写好的样式,就不需要自己写了

 

 

 这种切换无论是在app端还是小程序或者H5页面都是很常见的功能。对于这种功能,为单独封装成功组件,方便每个页面都能用到,

tab顶部导航栏

页面布局,使用uni-app提供的scroll-view组件。

这个页面相当于封装一个组件,便于其他他们调用使用,tabIndex这个是tab内容,tabIndex对应的索引值,表示第几个。scrollStyle父级样式设置,scrollItemStyle每一个tab内容样式设置

 

样式

tabtap点击切换效果,自定义一个tabtap事件,传递给父级,和vue语法一样

在父级组件

1.第一步先引入上面封装好的组件,

import swiperTabHead from "../../components/index/swiper-tab-head.vue";
注册组件
components:{
     swiperTabHead,
   }

2.使用组件

"tabBars" :tabIndex="tabIndex" @tabtap="tabtap">

3.在data定义好数据

 export default {
     data(){
         tabIndex:0,// 选中的
	tabBars:[
          { name:"关注",id:"guanzhu" },
	  { name:"推荐",id:"tuijian" },
	  { name:"体育",id:"tiyu" },
	  { name:"热点",id:"redian"  },
	  { name:"财经",id:"caijing" },
	  { name:"娱乐",id:"yule"    },
       ]	    			    
    }
}    

4.在方法中使用传过来的事件

//接受子组件传过来的值点击切换导航
            tabtap(index){
                this.tabIndex = index;
            },

切换内容,直接在父组件写

class="uni-tab-bar">
            class="swiper-box" :style="{height:swiperheight+'px'}" :current="tabIndex" @change="tabChange">
                for="(items,index) in newslist" :key="index">
                    class="list">
                        
                    
                
            
        

5.也是需要在data定义一下内容,newslist是循环遍历的tab内容的内容,大概数据结构就是这样的,swiperheight这个是需要动态计算可视区域内容的高度

swiperheight:500,//高度
newslist:[
   {
     list:[
       数据内天
       ]
   },
   {},
   {},
   {},
   {},
   {}
]

6.在methods方法中写手动切换的效果

//滑动切换导航
tabChange(e){
   this.tabIndex = e.detail.current;
},

 7.动态计算高度,upx2x是吧px转换成upx,调用这个api,需要在onLoad生命周期写

onLoad() {
   uni.getSystemInfo({
	success:(res)=>{
		let height = res.windowHeight-uni.upx2px(100)
		this.swiperheight = height;
	}
    })
},

  以上就是用uni-app实现的一个tab切换的效果,可以使用任何平台,已经测试几个平台,都没有问题,

你可能感兴趣的:(uni-app实现滑动切换效果)