TopNav-Width-Test-Guide.md 2.7 KB

顶部菜单动态宽度检测测试指南

功能说明

顶部菜单现在会根据可用空间动态调整显示的菜单项数量,超出部分会自动放入"更多"菜单中。

测试场景

1. 窗口大小调整

  • 操作: 拖动浏览器窗口调整大小
  • 预期: 菜单项数量会实时调整,确保不与右侧"Select Company"输入框重叠
  • 间隔: 20px 安全边距

2. 侧边栏展开/收起

  • 操作: 点击汉堡菜单图标切换侧边栏状态
  • 预期:
    • 侧边栏收起时,顶部菜单可用空间增加,显示更多菜单项
    • 侧边栏展开时,顶部菜单可用空间减少,部分菜单项移入"更多"
  • 延迟: 300ms(等待动画完成)

3. 语言切换

  • 操作: 切换系统语言(中文/英文)
  • 预期:
    • 菜单文本长度改变
    • 自动重新计算可显示的菜单项数量
    • 保持不与右侧元素重叠

4. 路由切换

  • 操作: 点击不同的菜单项切换页面
  • 预期:
    • 切换页面时重新计算可用宽度
    • 确保布局稳定
  • 延迟: 150ms(防抖)

5. 顶部导航模式切换

  • 操作: 在设置中切换"顶部导航"开关
  • 预期: 切换到顶部导航模式时,立即计算并正确显示菜单

调试模式

如果需要查看详细的计算过程,可以在代码中启用调试模式:

// 在 TopNav/index.vue 中
const DEBUG_MODE = true; // 改为 true

启用后,浏览器控制台会显示:

  • 可用宽度计算详情
  • 每个菜单项的宽度
  • 最终显示的菜单数量

关键参数

参数 说明
安全边距 20px 顶部菜单与右侧元素之间的间隔
"更多"按钮预留宽度 100px 用于判断是否需要显示"更多"按钮
侧边栏动画延迟 300ms 等待侧边栏展开/收起动画完成
路由切换防抖 150ms 避免频繁计算
窗口调整防抖 200ms 优化性能

已监听的变化

✅ 窗口大小调整 (resize)
✅ 侧边栏展开/收起状态 (sidebar.opened)
✅ 侧边栏显示/隐藏 (sidebar.hide)
✅ 顶部导航模式切换 (topNav)
✅ 语言切换 (locale)
✅ 菜单内容变化 (topMenus)
✅ 路由变化 (route.path)

边界条件处理

  1. 最小宽度保护: 可用宽度至少 100px
  2. 至少显示一项: 即使空间不足,也会显示至少一个菜单项
  3. 右侧菜单未就绪: 首次渲染时会延迟 100ms 重试
  4. 动画未完成: 侧边栏动画完成后再计算

注意事项

  • 所有计算都在 nextTick() 中执行,确保 DOM 已更新
  • 使用防抖机制避免过度计算
  • 支持动态菜单数量变化
  • 自适应不同分辨率和设备