arkts组件SideBarContainer :让侧边栏像呼吸一样自然

SideBarContainer 是 ArkTS 中专门处理「侧边栏+内容区」布局的容器组件,就像给应用装了一个智能抽屉------需要时滑出,不需要时自动隐藏。


核心设计

不同于传统布局的「固定占位」,SideBarContainer 通过空间智能分配实现三种形态的无缝切换:

  • · Embed模式:侧边栏与内容区共享空间,像书本的左右页
  • · Overlay模式:侧边栏悬浮覆盖,类似抽屉的推拉效果
  • · AUTO模式:根据容器尺寸自动选择最优方案

结构约束:2个子组件的精密舞蹈

SideBarContainer 对子组件有严格的「双人舞」规则:

子组件位置 角色定义 异常处理
第1个子组件 侧边栏(导航菜单) 超过2个时仅显示前两个
第2个子组件 内容区(主显示区域) 超过2个时仅显示前两个

特殊场景:当只有1个子组件时,侧边栏独占显示,内容区保持空白

三态切换的智能逻辑

Embed模式:空间共享的艺术

当容器宽度 ≥ minSideBarWidth + minContentWidth 时生效,侧边栏与内容区像拼图般严丝合缝。此时调整侧边栏宽度会实时挤压内容区空间,形成动态布局效果。

Overlay模式:悬浮层的优雅

侧边栏以蒙层形式出现,不占用主内容空间。适合小屏设备或需要聚焦内容的场景,配合半透明背景可营造层次感。

AUTO模式:自适应的智慧

API 10+ 引入的智能模式,以600vp为断点自动切换 Embed/Overlay。就像给组件装了一个「环境感知器」,能根据容器尺寸自动选择最优展示方案。

关键属性

尺寸控制体系

sideBarWidth。默认值240vp,支持动态调整(API 18+双向绑定)
minContentWidth。内容区最小360vp,保障核心内容不被压缩

交互控制开关

showControlButton默认true,可自定义图标样式

autoHide拖拽到最小宽度时自动隐藏

代码

复制代码
@Entry
@Component
struct SmartSideBar {
  @State isShow: boolean = true
  
  build() {
    SideBarContainer(SideBarContainerType.AUTO) {
      // 侧边栏:导航菜单
      Column() {
        Text('文档').fontSize(16).padding(12)
        Text('设置').fontSize(16).padding(12)
        Text('账户').fontSize(16).padding(12)
      }
      .backgroundColor('#F5F5F5')
      .width('200vp')
      
      // 内容区:主显示区域
      Column() {
        Text('内容区域')
          .fontSize(24)
          .fontWeight(FontWeight.Bold)
      }
      .padding(20)
    }
    .sideBarWidth('240vp')
    .minContentWidth('360vp')
    .showSideBar(this.isShow)
    .onChange((show: boolean) => {
      this.isShow = show
    })
  }
}
相关推荐
贾伟康5 小时前
【口算王|19】HarmonyOS ArkTS 回归测试实战:覆盖启动、空数据、异常输入和重复点击
软件测试·harmonyos·arkts·回归测试·hypium
贾伟康5 小时前
【句匠|09】HarmonyOS ArkTS 学习统计实战:汇总正确率、连续学习和薄弱类型
harmonyos·arkts·appstorage·学习统计·本地统计
贾伟康5 小时前
【口算王|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
harmonyos·arkts·arkui·深色模式·ui设计
贾伟康5 小时前
【口算王|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致
harmonyos·arkts·数据持久化·状态管理·preferences
贾伟康5 小时前
【口算王|18】HarmonyOS ArkTS 权限与隐私实战:让 module.json5、功能说明和拒绝路径一致
harmonyos·arkts·权限管理·隐私合规·module.json5
贾伟康6 小时前
【句匠|08】HarmonyOS ArkTS 句库搜索实战:支持关键词、分类和无结果反馈
harmonyos·arkts·分类筛选·学习应用·搜索功能
贾伟康7 小时前
【句匠|10】HarmonyOS ArkTS 分类句库实战:复用列表结构并保持导航参数类型安全
harmonyos·arkts·router·分类导航·题库列表
贾伟康8 小时前
【口算王|16】HarmonyOS ArkTS 多设备布局实战:适配手机、平板和 PC/2in1 的窗口变化
harmonyos·arkts·arkui·响应式布局·多设备适配
贾伟康20 小时前
【句匠|01】HarmonyOS ArkTS 英语纠错页实战:把原句、修改建议和解释层级展示清楚
harmonyos·arkts·textarea·学习应用·英语纠错
贾伟康2 天前
【时光清单|19】HarmonyOS ArkTS 回归测试实战:覆盖启动、空数据、异常输入和重复点击
软件测试·harmonyos·arkts·回归测试·hypium