Skip to content
专业版

FaLayoutContainer 布局容器组件

灵活的多区域布局容器,支持上下左右四个侧边区域,可折叠和拖拽调整。

基础用法

vue
<template>
  <FaLayoutContainer>
    <template #leftSide>左侧边栏</template>
    <template #default>主要内容</template>
    <template #rightSide>右侧边栏</template>
  </FaLayoutContainer>
</template>

Props

属性类型默认值说明
verticalbooleanfalse是否垂直布局模式
hideLeftSidebooleanfalse隐藏左侧边栏
hideRightSidebooleanfalse隐藏右侧边栏
hideTopSidebooleanfalse隐藏顶部边栏
hideBottomSidebooleanfalse隐藏底部边栏
hideLeftSideTogglebooleanfalse隐藏左侧切换按钮
hideRightSideTogglebooleanfalse隐藏右侧切换按钮
hideTopSideTogglebooleanfalse隐藏顶部切换按钮
hideBottomSideTogglebooleanfalse隐藏底部切换按钮
leftSideWidthnumber | string300左侧边栏宽度
rightSideWidthnumber | string300右侧边栏宽度
topSideHeightnumber | string200顶部边栏高度
bottomSideHeightnumber | string200底部边栏高度
classHTMLAttributes['class']-容器 CSS 类
leftSideClassHTMLAttributes['class']-左侧边栏 CSS 类
rightSideClassHTMLAttributes['class']-右侧边栏 CSS 类
topSideClassHTMLAttributes['class']-顶部边栏 CSS 类
bottomSideClassHTMLAttributes['class']-底部边栏 CSS 类
defaultClassHTMLAttributes['class']-主内容区 CSS 类

Slots

名称说明
leftSide左侧边栏内容
rightSide右侧边栏内容
topSide顶部边栏内容
bottomSide底部边栏内容
default主内容区

Model

名称类型说明
leftSideVisiableboolean左侧边栏显示状态(支持 v-model)
rightSideVisiableboolean右侧边栏显示状态(支持 v-model)
topSideVisiableboolean顶部边栏显示状态(支持 v-model)
bottomSideVisiableboolean底部边栏显示状态(支持 v-model)

Events

示例

左右布局

vue
<template>
  <FaLayoutContainer>
    <template #leftSide>
      <div class="p-4">左侧菜单</div>
    </template>
    <template #default>
      <div class="p-4">主内容区域</div>
    </template>
  </FaLayoutContainer>
</template>

三栏布局

vue
<template>
  <FaLayoutContainer
    :left-side-width="250"
    :right-side-width="300"
  >
    <template #leftSide>导航菜单</template>
    <template #default>主要内容</template>
    <template #rightSide>相关信息</template>
  </FaLayoutContainer>
</template>

垂直布局(上下结构)

vue
<template>
  <FaLayoutContainer vertical>
    <template #topSide>
      <div class="p-4">顶部工具栏</div>
    </template>
    <template #default>主内容</template>
    <template #bottomSide>
      <div class="p-4">底部信息</div>
    </template>
  </FaLayoutContainer>
</template>

自定义边栏尺寸

vue
<template>
  <FaLayoutContainer
    :left-side-width="'20%'"
    :right-side-width="280"
    :top-side-height="100"
  >
    <template #topSide>顶部</template>
    <template #leftSide>左侧</template>
    <template #default>主内容</template>
    <template #rightSide>右侧</template>
  </FaLayoutContainer>
</template>

控制边栏折叠

vue
<script setup lang="ts">
const leftVisible = ref(true)
</script>

<template>
  <FaLayoutContainer v-model:left-side-visiable="leftVisible">
    <template #leftSide>可折叠的左侧栏</template>
    <template #default>主内容</template>
  </FaLayoutContainer>
  
  <FaButton @click="leftVisible = !leftVisible">
    切换左侧栏
  </FaButton>
</template>

隐藏切换按钮

vue
<template>
  <FaLayoutContainer :hide-left-side-toggle="true">
    <template #leftSide>无法通过按钮折叠的左侧栏</template>
    <template #default>主内容</template>
  </FaLayoutContainer>
</template>

注意事项

  1. 边栏按需渲染:只有提供对应 slot 的边栏才会显示
  2. 切换按钮:默认在边栏边缘显示折叠/展开按钮
  3. 圆角处理:边栏折叠时会自动调整主内容区的圆角
  4. 响应式:支持百分比和固定数值两种尺寸设置方式
  5. 垂直模式:设置 vertical 后,上下边栏会优先显示

典型使用场景

  • 后台管理页面布局(左侧菜单 + 主内容)
  • 三栏布局(导航 + 内容 + 详情)
  • 上下结构页面(工具栏 + 内容 + 状态栏)
  • 可折叠面板布局
  • IDE 风格的编辑器界面