开始
横向滚动的tab的切换。
先来看一下官方给我们的模板。选择模板。、
顶部选项卡下面有一个非原生
和我们要做很像,我们不会完全的复制它的代码。我们只会用它的样式。
我们引入的官方的css,它的样式就写在里面。
新建项目,选择Hello uni-app这个模块,生成的就是例子。
ctrl+F输入关键字搜索 导航
顶部选项卡
{"path": "tabbar/tabbar","style": {"navigationBarTitleText": "可拖动顶部选项卡"}},
找到这个组件的组件代码。
<scroll-view id="tab-bar" class="scroll-h" :scroll-x="true" :show-scrollbar="false" :scroll-into-view="scrollInto"><view v-for="(tab,index) in tabBars" :key="tab.id" class="uni-tab-item" :id="tab.id" :data-current="index" @click="ontabtap"><text class="uni-tab-item-title" :class="tabIndex==index ? 'uni-tab-item-title-active' : ''">{{tab.name}}</text></view></scroll-view>


外面一定要加一个class属性为uni-tab-bar的 view层包裹起来。
<view class="uni-tab-bar"><scroll-view scroll-x class="uni-swiper-tab"><view class="swiper-tab-list"></view></scroll-view></view>
这里面的view也有class属性
<view class="uni-tab-bar"><scroll-view scroll-x class="uni-swiper-tab"><view class="swiper-tab-list"></view></scroll-view></view>
这是提供的案例数据
仿照例子的数据,在自己项目里面造一些数据

tabBars: [{name: "关注",id: "guanzhu"},{name: "推荐",id: "tuijian"},{name: "体育",id: "tiyu"},{name: "热点",id: "redian"},{name: "财经",id: "caijing"},{name: "娱乐",id: "yule"},],

<scroll-view scroll-x class="uni-swiper-tab"><block v-for="(tab,index) in tabBars" :key="tab.id"><view class="swiper-tab-list">{{tab.name}}</view></block></scroll-view>
左右也是可以滚动的。
拖动的时候,左右带滚动条
选中的tab,根据索引来标识。
设置换个变量,默认选中第一个。
tabIndex:0,
当前索引值和设置的相等 就显示active的class属性,标识激活。
<view class="swiper-tab-list" :class="{'active':tabIndex==index}">{{tab.name}}</view>
选中的变蓝色。点击其他的tab是没有用的。
点击tab的切换事件
<view class="swiper-tab-list":class="{'active':tabIndex==index}"@tap="tabtap(index)">

优化选中的样式

我们来找一下官方默认的uni.css里面tab的样式
选中的样式
吸取文字的颜色
直接在页面上写
.swiper-tab-list {color: #969696;font-weight: bold;}
选中的样式

.swiper-tab-list {color: #969696;font-weight: bold;}.uni-tab-bar .active{color: #343434;}

选中的下面的黄色线。在下面加一个view组件当做下划线。

注意这个view是tab的标题下面的
<view class="swiper-tab-line"></view>
吸取下黄色

.active .swiper-tab-line{border-bottom: 6upx solid #FEDE33;}

宽度设置的短一点

视频中用的margin:auto;但是我在H5和手机真机调试过程中 无法看到黄色的下划线效果。
.active .swiper-tab-line{border-bottom: 6upx solid #FEDE33;width: 70upx;margin: auto;border-top: 6upx solid #FEDE33;border-radius: 20upx;}
自己修改margin的top和left来达到实际的效果。不能用margin:auto;
.active .swiper-tab-line{border-bottom: 6upx solid #FEDE33;width: 70upx;margin-top: -20upx;/* margin: auto; */margin-left: 40upx;border-top: 6upx solid #FEDE33;border-radius: 20upx;}
我的H5下的效果
我的真机效果
下面是视频中的截图

底部再加一个线
.uni-swiper-tab{border-bottom: 1upx solid #EEEEEE;}
封装组件
动态页 也会用到这个组件
下节课再封装!
