tabs 标签

该组件,是一个tabs标签组件,在标签多的时候,可以配置为左右滑动,标签少的时候,可以禁止滑动。 该组件的一个特点是配置为滚动模式时,激活的tab会自动移动到组件的中间位置。

uView中,共有2个组件可以实现tabs标签切换,分别是tabs组件,tabsSwiper组件,他们的异同点是:

  • tabs组件可以不结合uni-appswiper轮播组件使用,tabsSwiper组件是必须要结uni-appswiper轮播组件才能使用的。
  • tabs组件使用更简洁明了(这也是其存在的理由),tabsSwiper组件配置相对复杂一些。
  • tabsSwiper组件相比tabs组件,由于搭配了uni-appswiper轮播组件,获得了滑块跟随,标签颜色渐变等效果(请在演示中扫码查看效果),而tabs组件是不具备的。

总的来说,二者配置参数和功能都差不多,看用户的需求自行衡量该使用哪一个组件。

平台差异说明

AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序

基本使用

  • 通过设置is-scroll(默认为true),配置tabs组件的内容是否可以左右拖动,一般4个标签以下时,无需拖动,设置为false,5个标签以上,建议可以左右拖动。
  • tabs标签的切换,需要绑定current值,在change事件回调中可以得到index,将其赋值给current即可。

具体的标签,通过list参数配置,该参数要求为数组,元素为对象,对象要有name属性,见示例:

说明

is-scroll参数很重要,如果您的tabs项只有几个,且不想tabs导航栏可以被左右滑动的话,请一定要设置is-scrollfalse,因为它默认为true

  1. <u-tabs :list="list" :is-scroll="false" :current="current" @change="change"></u-tabs>
  2. <script>
  3. export default {
  4. data() {
  5. return {
  6. list: [{
  7. name: '待收货'
  8. }, {
  9. name: '待付款'
  10. }, {
  11. name: '待评价'
  12. }],
  13. current: 0
  14. }
  15. },
  16. methods: {
  17. change(index) {
  18. this.current = index;
  19. }
  20. }
  21. }
  22. </script>

控制组件读取的数组元素属性名

某些情况下,数据可能是从后端获取的,list所需的数组中不一定会有name属性,比如可能为cate_name,如果这种情况还需一定要提供name属性 会导致用户需要循环一遍,把cate_name改成name,显然不人性的,所以uView给tabsSwiper组件提供了一个name参数,您可以设置其值为cate_name,组件内部 会读取数组中的cate_name属性,而不是默认的name属性。

  1. <u-tabs name="cate_name" :list="list" :is-scroll="false" :current="current" @change="change"></u-tabs>
  2. <script>
  3. export default {
  4. data() {
  5. return {
  6. list: [{
  7. cate_name: '待收货'
  8. }, {
  9. cate_name: '待付款'
  10. }, {
  11. cate_name: '待评价'
  12. }],
  13. current: 0
  14. }
  15. },
  16. methods: {
  17. change(index) {
  18. this.current = index;
  19. }
  20. }
  21. }
  22. </script>

手动配置激活的标签

可以通过current控制tabs当前的第几个tab处于激活状态

  1. <u-tabs ref="tabs" :list="list" current="2"></u-tabs>

控制tabs组件的宽度

有时候我们并不想让tabs组件占满整个屏幕的宽度,如果有此需求,可以给tabs外面嵌套一个view元素,控制这个view的宽度或者内外边距,view里面的tabs组件 宽度也会相应的发生变化。

  1. <view style="width: 400rpx;">
  2. <u-tabs ref="tabs" :list="list" current="2"></u-tabs>
  3. </view>

控制底部滑块的样式

  1. 可以通过active-color控制颜色(同时为当前活动tab文字颜色和滑块的颜色)。
  2. bar-width控制滑块的长度(rpx)。
  3. bar-height控制滑块高度。
  1. <u-tabs ref="tabs" :list="list" bar-height="6" bar-width="40" active-color="#2979ff"></u-tabs>

控制tabs组件的活动tab样式

  1. 通过active-colorinactive-color控制tabs的激活和非激活颜色。
  2. font-size为tabs文字大小。
  3. current为初始化tabs的激活tab索引,默认为0。gutter为单个tab标签的左右内边距之和,即左右各占gutter的一半。
  1. <u-tabs ref="tabs" :list="list" active-color="#2979ff" inactive-color="#606266" font-size="30" :current="current"></u-tabs>

API

Props

参数说明类型默认值可选值
is-scrolltabs是否可以左右拖动Booleantruefalse
list标签数组,元素为对象,如[{name: ‘推荐’}]Array--
current指定哪个tab为激活状态String | Number0,即list的第一项-
height导航栏的高度,单位rpxString | Number80-
font-sizetab文字大小,单位rpxString | Number30-
duration滑块移动一次所需的时间,单位String | Number0.5-
active-color滑块和激活tab文字的颜色String#2979ff-
inactive-colortabs文字颜色String#303133-
bar-width滑块宽度,单位rpxString | Number40-
bar-height滑块高度,单位rpxString | Number6-
gutter单个tab标签的左右内边距之和,单位rpxString | Number40-
bg-colortabs导航栏的背景颜色string#ffffff-
name组件内部读取的list参数中的属性名,见上方说明stringname-
bold激活选项的字体是否加粗Booleantruefalse
show-bar是否显示底部的滑块Booleantruefalse
bar-style底部滑块的样式,对象形式Object{}-
active-item-style当前活动Item的样式,对象形式Object{}-

Events

事件名说明回调参数版本
change点击标签时触发index: 点击了第几个tab,索引从0开始-