目录
页面布局,使用uni-app提供的scroll-view组件。api
tabtap点击切换效果,自定义一个tabtap事件,传递给父级,和vue语法同样框架
5.也是须要在data定义一下内容,newslist是循环遍历的tab内容的内容,大概数据结构就是这样的,swiperheight这个是须要动态计算可视区域内容的高度
7.动态计算高度,upx2x是吧px转换成upx,调用这个api,须要在onLoad生命周期写
一、tab顶部导航栏小程序
页面布局,使用uni-app提供的scroll-view组件。api
<template>
<view class="uni-tab-bar">
<scroll-view class="uni-swiper-tab" scroll-x>
<block v-for="(tab,index) in tabBars" :key="tab.id" :style="scrollStyle">
<view class="swiper-tab-list" :class="{'active' : tabIndex==index}" @tap="tabtap(index)" :style="scrollItemStyle"
> {{tab.name}} {{tab.num?tab.num:""}} <view class="swiper-tab-line"></view>
</view>
</block>
</scroll-view>
</view>
</template>
这个页面至关于封装一个组件,便于其余他们调用使用,tabIndex这个是tab内容,tabIndex对应的索引值,表示第几个。scrollStyle父级样式设置,scrollItemStyle每个tab内容样式设置数据结构
<script>
export default {
props:{
tabBars:Array,
tabIndex:Number,
scrollStyle:{
type:String,
default:""
},
scrollItemStyle:{
type:String,
default:""
}
},
methods:{
//点击切换导航
tabtap(index){
// this.tabIndex = index;
this.$emit('tabtap',index)
}
}
}
</script>
样式app
<style scoped >
.uni-swiper-tab{
border-bottom: 1upx solid #EEEEEE;
}
.swiper-tab-list{
color: #969696;
font-weight: bold;
}
.uni-tab-bar .active{
color: #343434;
}
.active .swiper-tab-line{
border-bottom: 6upx solid #FEDE33;
width: 70upx;
margin: auto;
border-top: 6upx solid #FEDE33;
border-radius: 20upx;
}
</style>
tabtap点击切换效果,自定义一个tabtap事件,传递给父级,和vue语法同样框架
二、在父级组件布局
1.第一步先引入上面封装好的组件,测试
import swiperTabHead from "../../components/index/swiper-tab-head.vue";
注册组件
components:{
swiperTabHead,
}
2.使用组件ui
<swiperTabHead :tabBars="tabBars" :tabIndex="tabIndex" @tabtap="tabtap"></swiperTabHead>
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; },
切换内容,直接在父组件写
<view class="uni-tab-bar">
<swiper class="swiper-box" :style="{height:swiperheight+'px'}" :current="tabIndex" @change="tabChange">
<swiper-item v-for="(items,index) in newslist" :key="index">
<scroll-view scroll-y class="list">
<template v-if="items.list.length > 0">
<!-- 图文列表 -->
<block v-for="(item,index1) in items.list" :key="index1">
<view>{{item}}</view>
</block>
</template>
</scroll-view>
</swiper-item>
</swiper>
</view>
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是一款基于Vue.js的跨平台开发框架,它支持一次编写,多端发布,包括了H5、小程序、App等多个平台。在uni-app中,云打包是一种将uni-app项目打包到云端生成原生应用的功能。
云打包能够帮助开发者将uni-app项目打包,并生成对应平台的原生应用,无需在本地进行繁琐的配置和编译工作。使用云打包,可以大大简化开发流程,提高开发效率。
在uni-app中,使用云打包需要以下步骤:
- 登录HBuilderX编辑器,并打开你的uni-app项目。
- 在HBuilderX的底部工具栏中,点击云打包按钮。
- 在云打包页面中,选择目标平台(比如iOS、Android等)。
- 配置应用相关信息,比如应用名称、应用图标、包名等。
- 点击开始打包按钮,等待打包完成。
- 打包完成后,会生成对应平台的原生应用文件,可以进行安装和发布。
需要注意的是,云打包功能可能需要付费或者是需要开发者账号的相关权限才能使用,具体以HBuilderX的最新版本和相关文档为准。
以上就是用uni-app实现的一个tab切换的效果,能够使用任何平台,已经测试几个平台,都没有问题