Skip to content

标签、选项卡 Tabs

标签、选项卡组件。

[!ERROR] 重要提示 飞书小程序 scroll-view 横向滚动模拟器上测试的是无法滚动,真机可以。

兼容性

  • 兼容:✅
  • 不兼容:❌
  • 未知:❔
H5安卓苹果微信支付宝百度抖音QQ快手飞书京东
小红书鸿蒙360华为快应用快应用联盟

插件市场地址

DCloud 插件市场地址

基础使用

  • 默认激活项居中。
  • 需结合 pure-tabs-item 组件使用。
  • 通过 value 绑定激活项的值。
  • 需给 pure-tabs-item 设置 itemvalue 属性。
  • 通过监听 pure-tabstabClick 事件或 pure-tabs-itemonClick 事件获取到点击项的数据后手动更新 pure-tabs 绑定的 value 值来实现切换选项卡。
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick">
		<pure-tabs-item v-for="(tab, index) in tabs" :key="tab.value" :item="tab" :value="tab.value">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

<script>
import { ref } from "vue";

// tabs
const tabs = ref([
	{ name: "前端", value: 1 },
	{ name: "后端", value: 2 },
	{ name: "Java", value: 3 },
	{ name: "PHP", value: 4 },
	{ name: "Python", value: 5, disabled: true },
	{ name: "Vue", value: 6 },
	{ name: "React", value: 7 },
	{ name: "CSS", value: 8 },
	{ name: "HTML", value: 9 },
	{ name: "JavaScript", value: 10 },
	{ name: "C", value: 11, disabled: true },
	{ name: "C++", value: 12 },
	{ name: "C#", value: 13 },
]);
const tabValue = ref(4);

// Tab点击事件
function handleTabClick(item) {
	console.log("Tab点击事件", item);
	// 更新绑定值
	tabValue.value = item.value;
}
</script>

贴边吸附

  • pure-tabs 添加 edge 属性开启。
  • 开启后激活项会自动贴边吸附到最左/顶部。
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick" edge>
		<pure-tabs-item v-for="(tab, index) in tabs" :key="tab.value" :item="tab" :value="tab.value">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

只滚动到可见

  • pure-tabs 添加 visible 属性开启。
  • 只讲激活项滚动到可见状态,表现为靠左/顶或者靠右/底。
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick" visible>
		<pure-tabs-item v-for="(tab, index) in tabs" :key="tab.value" :item="tab" :value="tab.value">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

禁用选项卡

  • pure-tabs-item 添加 disabled 属性即可禁用该项。
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick">
		<pure-tabs-item v-for="(tab, index) in tabs" :key="tab.value" :item="tab" :value="tab.value" :disabled="tab.disabled">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

禁止滚动

  • pure-tabs 添加 disabled 属性开启。
  • 禁止滚动后 items 宽度将会变为 100%
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick" disabled>
		<pure-tabs-item v-for="(tab, index) in tabs.slice(0, 4)" :key="tab.value" :item="tab" :value="tab.value">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

等分布局

  • 通过添加辅助类 pure-tabs-equal 实现。
  • 一般需结合 disable 禁止滚动使用。
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick" disabled class="pure-tabs-equal">
		<pure-tabs-item v-for="(tab, index) in tabs.slice(0, 4)" :key="tab.value" :item="tab" :value="tab.value">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

两端对齐

  • 通过添加辅助类 pure-tabs-justify 实现。
  • 一般需结合 disable 禁止滚动使用。
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick" disabled class="pure-tabs-justify">
		<pure-tabs-item v-for="(tab, index) in tabs.slice(0, 4)" :key="tab.value" :item="tab" :value="tab.value">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

换行布局

  • 通过添加辅助类 pure-tabs-wrap 实现。
  • 一般需结合 disable 禁止滚动使用。
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick" disabled class="pure-tabs-equal pure-tabs-wrap">
		<pure-tabs-item v-for="(tab, index) in tabs.slice(0, 4)" :key="tab.value" :item="tab" :value="tab.value">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

纵向布局

  • pure-tabs 添加 vertical 属性开启。
vue
<template>
	<pure-tabs :value="tabValue" @tabClick="handleTabClick" vertical>
		<pure-tabs-item v-for="(tab, index) in tabs" :key="tab.value" :item="tab" :value="tab.value">
			<text class="item">{{ tab.name }}</text>
		</pure-tabs-item>
	</pure-tabs>
</template>

Props

pure-tabs

属性名说明类型默认值可选值版本
hoverClass给所有子项设置 hover-class,同 viewhover-classString"pure-hover"-+1.0.0
value激活项的值[Number, String]null-+1.0.0
animation是否开启滚动动画Booleantruefalse+1.0.0
disabled是否禁止滚动Booleanfalsetrue+1.0.0
vertical纵向布局Booleanfalsetrue+1.0.0
edge自动贴边Booleanfalsetrue+1.0.0
visible只将激活项滚动到可视区域Booleanfalsetrue+1.0.0
disabledClass给所有子项设置禁用时的类名Stringpure-disabled-+1.0.0

pure-tabs-item

属性名说明类型默认值可选值版本
hoverClass给子项单独设置 hover-class,同 viewhover-classString""-+1.0.0
item子项数据Objectnull-+1.0.0
value子项的值[Number, String]""-+1.0.0
disabled是否禁用该子项Booleanfalsetrue+1.0.0
disabledClass子项禁用时的类名String--+1.0.0

Event

pure-tabs

事件名说明回调参数版本
tabClick选项点击事件item: 选项数据+1.0.0

pure-tabs-item

事件名说明回调参数版本
onClick选项点击事件item: 选项数据+1.0.0

Expose

pure-tabs

方法说明参数版本
init初始化函数,组件异常时可使用此函数重新初始化-+1.0.0

Slots

pure-tabs

名称说明参数版本
default默认,通常放 pure-tabs-item 组件-+1.0.0

pure-tabs-item

名称说明参数版本
default默认-+1.0.0

基于 MIT 许可发布