Skip to content

FxTabs 标签页

多标签页组件,支持 谷歌 / 卡片 / 朴素 / 轻快 四种风格,内置左右滚动、滚轮响应、拖拽排序、右键菜单、固定标签(affix)与工具栏。状态逻辑抽离到 useTabs composable,组件本身只做渲染与事件转发。

基础用法(配合 useTabs)

vue
<script setup lang="ts">
import { FxTabs, useTabs } from "@fx/layouts"

const {
  visibleTabs,
  active,
  removeTab,
  closeLeftTabs,
  closeRightTabs,
  closeOtherTabs,
  closeAllTabs,
  sortTabs,
  togglePin,
} = useTabs({
  initialTabs: [{ key: "/home", title: "首页", icon: "ep:data-analysis", affix: true }],
  maxCount: 10,
  persist: true,
})
</script>

<template>
  <FxTabs
    v-model:active="active"
    :tabs="visibleTabs"
    style-type="chrome"
    :draggable="true"
    :wheelable="true"
    @close="removeTab"
    @close-left="closeLeftTabs"
    @close-right="closeRightTabs"
    @close-other="closeOtherTabs"
    @close-all="closeAllTabs"
    @sort="sortTabs"
    @pin="togglePin"
    @unpin="togglePin"
  />
</template>

Attributes(核心)

参数说明类型默认值
tabs标签列表(建议传 useTabs().visibleTabsFxTabItem[][]
active (v-model)当前激活 keystring""
style-type标签页风格chrome | card | plain | briskcard
draggable是否启用拖拽排序booleantrue
wheelable是否响应纵向滚轮booleantrue
show-more / show-refresh / show-maximize工具栏按钮显隐booleantrue
height标签栏高度(px)number38

Events(核心)

事件名说明
update:active / click / close / close-left / close-right / close-other / close-all标签交互
sort拖拽排序 (oldIndex, newIndex)
pin / unpin固定 / 取消固定
reload / toggle-maximize刷新 / 最大化

四种风格

风格视觉
chrome谷歌浏览器:SVG 弧形圆角底,标签重叠
card独立圆角卡片,边框
plain仅左右分隔线
brisk底部主色下划线

注意事项

  • 组件只负责渲染与事件转发,路由跳转 / 刷新实现由消费方在事件回调中处理
  • 完整 Attributes / Events / Exposes / useTabs 参数详见包内 packages/layout-ui/src/fxTabs/README.md