选项卡
选项卡组件。
基础使用
- 通过
list属性设置选项卡数据。 - 通过
current属性设置当前选中的选项卡索引。
vue
<template>
<pure-tabs :list="list" :current="current" label-key="text" @onClick="handleClick"></pure-tabs>
</template>
<script setup>
import { ref } from "vue";
// 选项卡数据列表
const list = ref([
// 选项卡数据项
// 选项卡默认展示数据项中的 label 字段对应的文本,可以通过 label-key 属性指定要展示的字段名称
{ text: "日常", name: "tab1" },
{ text: "水果", name: "tab2" },
{ text: "家电", name: "tab3" },
]);
const current = ref(0);
// 选项卡数据项点击事件处理函数
// index: 选项卡数据项的索引
// item: 选项卡数据项
function handleClick(index, item) {
current.value = index;
}
</script>自动居中
组件默认会将激活项居中展示。
吸附模式
将 sticky 属性设置为 true 开启吸附模式。
此模式,激活项会自动滚动到容器的最左侧。
可视模式
将 visible 属性设置为 true 开启可视模式。
此模式,激活项会自动将激活项滚动到可见状态。
等分布局
将 equal 属性设置为 true 开启等分布局样式,开启后:
- 选项卡无法滚动。
- 每个选项卡占用的宽度相同,等同于
flex-grow: 1; flex-shrink: 0;
两端对齐布局
将 justify 属性设置为 true 开启两端对齐布局样式,开启后:
- 选项卡无法滚动。
- 等同于
justify-content: space-between;
禁止滚动
将 disabled 属性设置为 true 即可禁止选项卡滚动。
vue
<template>
<pure-tabs :list="list" :current="current" disabled></pure-tabs>
</template>禁用选项
如果选项数据中有 disabled 字段,且值为 true,则该选项卡将被禁用,无法触发 onClick 事件。
vue
<template>
<pure-tabs :list="list" :current="current" @onClick="handleClick"></pure-tabs>
</template>
<script setup>
import { ref } from "vue";
// 选项卡数据列表
const list = ref([
// 选项卡数据项
{ label: "日常", name: "tab1" },
// 该选项将会被禁用,无法触发点击事件
{ label: "水果", name: "tab2", disabled: true },
{ label: "家电", name: "tab3" },
]);
const current = ref(0);
// 选项卡数据项点击事件处理函数
// index: 选项卡数据项的索引
// item: 选项卡数据项
function handleClick(index, item) {
current.value = index;
}
</script>纵向布局
- 将
vertical属性设置为true开启纵向布局样式。
提示
纵向布局时组件高度默认 100%。
vue
<template>
<view style="height: 200px;">
<pure-tabs :list="list" :current="current" vertical @onClick="handleClick"></pure-tabs>
</view>
</template>
<script setup>
import { ref } from "vue";
// 选项卡数据列表
const list = ref([
// 选项卡数据项
{ label: "日常", name: "tab1" },
{ label: "水果", name: "tab2" },
{ label: "家电", name: "tab3" },
// ...
]);
const current = ref(0);
</script>自定义指示器
通过 indicator 插槽自定义指示器。
vue
<template>
<!-- 自定义指示器时一般还需配合将默认指示条隐藏掉,否则会显示多个指示器 -->
<!-- 通过 :show-bar="false" 隐藏默认指示条 -->
<pure-tabs :list="list" :current="current" :show-bar="false" @onClick="handleClick">
<!-- activated:当前选项卡是否被激活 -->
<!-- item:当前选项卡的数据项 -->
<!-- index:当前选项卡的数据项的索引 -->
<template #indicator="{ activated, item, index }">
<image class="indicator" :class="activated ? 'active' : ''" src="/static/images/a_002.png" mode="widthFix" style="width: 1em" />
</template>
</pure-tabs>
</template>
<script setup>
import { ref } from "vue";
// 选项卡数据列表
const list = ref([
{ label: "日常", name: "tab1" },
{ label: "水果", name: "tab2" },
{ label: "家电", name: "tab3" },
]);
const current = ref(0);
// 选项卡数据项点击事件处理函数
// index: 选项卡数据项的索引
// item: 选项卡数据项
function handleClick(index, item) {
current.value = index;
}
</script>
<style scoped lang="scss">
// 自定义指示器样式
// 指示器默认显示在最下方
.indicator {
width: 1em;
position: absolute;
bottom: 0;
left: 50%;
transform: translate(-50%, 100%) scale(0);
opacity: 0;
transition: all 0.3s ease-in-out;
&.active {
transform: translate(-50%, 0) scale(1);
opacity: 1;
}
}主题
通过 theme 属性设置选项卡主题,主题样式只应用到激活项上。
vue
<template>
<pure-tabs theme="primary" :list="list" :current="current"></pure-tabs>
<pure-tabs theme="success" :list="list" :current="current"></pure-tabs>
<pure-tabs theme="warning" :list="list" :current="current"></pure-tabs>
<pure-tabs theme="error" :list="list" :current="current"></pure-tabs>
<pure-tabs theme="info" :list="list" :current="current"></pure-tabs>
</template>幽灵样式
通过 ghost 属性设置选项卡幽灵样式,幽灵样式只应用到激活项上。
vue
<template>
<pure-tabs ghost theme="primary" :list="list" :current="current"></pure-tabs>
<pure-tabs ghost theme="success" :list="list" :current="current"></pure-tabs>
<pure-tabs ghost theme="warning" :list="list" :current="current"></pure-tabs>
<pure-tabs ghost theme="error" :list="list" :current="current"></pure-tabs>
<pure-tabs ghost theme="info" :list="list" :current="current"></pure-tabs>
</template>镂空样式
通过 plain 属性设置选项卡镂空样式,镂空样式只应用到激活项上。
vue
<template>
<pure-tabs plain theme="primary" :list="list" :current="current"></pure-tabs>
<pure-tabs plain theme="success" :list="list" :current="current"></pure-tabs>
<pure-tabs plain theme="warning" :list="list" :current="current"></pure-tabs>
<pure-tabs plain theme="error" :list="list" :current="current"></pure-tabs>
<pure-tabs plain theme="info" :list="list" :current="current"></pure-tabs>
</template>属性
| 名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|
hoverClass | String | pure-hover | 按下去的样式类 |
list | Array | 选项卡数据列表 | |
current | Number | 激活项的索引 | |
labelKey | String | label | 显示文本对应的字段名称 |
vertical | Boolean | false | 垂直方向布局 |
showBar | Boolean | false | 是否显示指示条,注意,此配置只影响默认的指示条,自定义指示器不受影响 |
sticky | Boolean | false | 是否开启吸附模式 |
visible | Boolean | false | 是否开启可视模式 |
disabled | Boolean | false | 是否禁止滚动 |
equal | Boolean | false | 是否等分布局 |
justify | String | center | 是否两端对齐布局 |
animation | Boolean | true | 滚动时是否使用动画 |
theme | String | 主题 | |
ghost | Boolean | false | 幽灵样式 |
plain | Boolean | false | 镂空样式 |
bold | [String, Number] | 700 | 激活项字体加粗值 |
事件
| 名称 | 参数 | 说明 |
|---|---|---|
onClick | index: 数据索引; item: 数据项数据 | 选项点击事件 |
插槽
| 名称 | 参数 | 说明 |
|---|---|---|
#left | 左侧固定内容 | |
#indicator | index: 选项索引; item: 选项数据; activated: 选项是否被激活; | 自定义指示器 |
#bar | 默认指示条 | |
#right | 右侧固定内容 |
样式变量
| 名称 | 说明 |
|---|---|
--pure-tabs-text-align | 组件文本对齐方式 |
--pure-tabs-background | 组件背景 |
--pure-tabs-width | 组件宽度 |
--pure-tabs-height | 组件高度 |
--pure-tabs-content-padding | 组件主内容(选项卡部分)内边距 |
--pure-tabs-items-padding | 组件主内容(选项卡部分)内边距 |
--pure-tabs-items-gap | 选项之间间距 |
--pure-tabs-item-padding | 选项内边距 |
--pure-tabs-item-margin | 选项外边距 |
--pure-tabs-item-flex-direction | 选项 flex 布局方向 |
--pure-tabs-item-align-items | 选项 flex 布局 align-items 对齐方式 |
--pure-tabs-item-justify-content | 选项 flex 布局 justify-content 对齐方式 |
--pure-tabs-item-transition | 选项过渡效果 |
--pure-tabs-item-background-default-transform | 未激活选项背景的变换方式 |
--pure-tabs-item-background-default-opacity | 未激活选项背景的透明度 |
--pure-tabs-item-background-default-transition | 未激活选项背景的过渡效果 |
--pure-tabs-item-active-color | 激活项文本颜色 |
--pure-tabs-item-active-font-size | 激活项字体大小 |
--pure-tabs-item-active-font-weight | 激活项字体粗细 |
--pure-tabs-item-active-background | 激活项背景 |
--pure-tabs-item-active-background-opacity | 激活项背景透明度 |
--pure-tabs-item-active-background-transform | 激活项背景变换方式 |
--pure-tabs-item-active-background-opacity | 激活项背景透明度 |
--pure-tabs-item-disabled-opacity | 禁用项透明度 |
--pure-tabs-item-disabled-font-size | 禁用项字体大小 |
--pure-tabs-item-disabled-color | 禁用项文本颜色 |
--pure-tabs-item-disabled-background | 禁用项背景 |
--pure-tabs-item-disabled-font-weight | 禁用项字体粗细 |
--pure-tabs-bar-background | 指示条背景 |
--pure-tabs-bar-border-radius | 指示条圆角大小 |
--pure-tabs-bar-bottom | 指示条定位位置 |
--pure-tabs-bar-left | 指示条定位位置 |
--pure-tabs-bar-width | 指示条宽度 |
--pure-tabs-bar-height | 指示条高度 |
--pure-tabs-bar-transform | 指示条变换方式 |