Skip to content

fix(admin/settings): 修复标签栏溢出时背景色未覆盖「数据备份」#2263

Open
zhoupb01 wants to merge 1 commit intoWei-Shaw:mainfrom
zhoupb01:fix/settings-tabs-background-overflow
Open

fix(admin/settings): 修复标签栏溢出时背景色未覆盖「数据备份」#2263
zhoupb01 wants to merge 1 commit intoWei-Shaw:mainfrom
zhoupb01:fix/settings-tabs-background-overflow

Conversation

@zhoupb01
Copy link
Copy Markdown

@zhoupb01 zhoupb01 commented May 7, 2026

问题

/admin/settings 页面 settings-tabs 标签栏中,最后一个标签「数据备份」缺失背景色——bg-white/80 的圆角胶囊背景在它身上断掉了。

复现

  1. 在中等宽度视窗(约 1024–1280px,例如带侧栏的笔记本屏幕)打开 /admin/settings
  2. 查看标签栏最右侧的「数据备份」
  3. 它会落在容器背景色之外(不论是否选中)

根因

frontend/src/views/admin/SettingsView.vue 中样式定义如下:

.settings-tabs {
  @apply inline-flex min-w-full gap-0.5 rounded-2xl
         border border-gray-100 bg-white/80 p-1 backdrop-blur-sm
         dark:border-dark-700/50 dark:bg-dark-800/80;
  ...
}

@media (min-width: 640px) {
  .settings-tabs {
    @apply flex;
  }
}

主规则是 inline-flex min-w-full,但 ≥640px 时被覆盖成 flex。两者关键差别:

  • inline-flex:inline 级别,宽度跟随内容;min-width: 100% 保证至少撑满父容器,内容更宽时容器一起撑大。
  • flex:block 级别,宽度默认等于父容器(即 100%),不会随内容增长。

#e872cba(feat: 添加登录注册条款确认)新增 agreement 后,标签数量从 8 变为 9。在中等宽度视窗下,9 个 whitespace-nowrap + flex-1 的标签 min-content 总和会超过容器 100% 宽度——但因为媒体查询把容器锁在 flex(block 级),容器宽度仍是 100%,子项溢出到容器外。bg-white/80 只画在容器实际宽度内,溢出部分(最后的「数据备份」)落在背景色之外。

父级 .settings-tabs-scrolloverflow-x-auto,所以溢出可滚动看到,但底色丢失的问题就此暴露。

修复

删除 ≥640px 的媒体查询。主规则 inline-flex min-w-full 已经能正确处理两种情形:

  • 内容塞得下:min-width: 100% 让容器至少 100% 宽,子项 flex-1 平均分配 — 与之前视觉完全一致。
  • 内容溢出:inline-flex 让容器随内容撑大,背景覆盖到所有子项 — 修好。
- @media (min-width: 640px) {
-   .settings-tabs {
-     @apply flex;
-   }
- }

影响面

  • .settings-tabs class 仅在 SettingsView.vue 使用一处(<nav class="settings-tabs">),样式定义也只在本文件,无其他引用。
  • 父容器只包含这一个 <nav>,没有 inline 兄弟元素,inline-flex 不会引入空白或基线问题。

测试

  • 中等宽度视窗:标签栏整体一个胶囊形圆角背景,「数据备份」落在背景色内(修复前在背景色外)。
  • 宽屏:所有标签等宽分布,视觉无变化。
  • 窄屏(移动端):行为不变,仍可横向滚动。

新增「登录条款」标签后,settings-tabs 共有 9 个标签,在中等宽度的视窗
下子项会横向溢出。媒体查询将容器从 inline-flex 改成 flex,使容器宽度
固定在父级 100%,溢出部分(如「数据备份」)落在背景色之外,看上去
像是丢了底色。

主样式本身就是 inline-flex min-w-full,溢出时容器会自然撑开,背景能
正常覆盖到所有子项。删除冗余的媒体查询即可修复,能塞下时视觉与之前
完全一致。
Copilot AI review requested due to automatic review settings May 7, 2026 14:21
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

All contributors have signed the CLA. ✅
Posted by the CLA Assistant Lite bot.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

此 PR 修复 /admin/settings 页面设置标签栏在中等宽度视窗下发生横向溢出时,最后一个标签(「数据备份」)落在胶囊背景(bg-white/80)之外的问题;通过让标签容器在内容溢出时可随内容扩展,从而确保背景覆盖全部标签并与横向滚动一致。

Changes:

  • 移除 .settings-tabsmin-width: 640px 时强制变为 flex(block 级宽度锁定为 100%)的媒体查询覆盖
  • 统一使用 inline-flex min-w-full:内容不溢出时仍铺满容器,溢出时容器随内容增长以覆盖背景

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@zhoupb01
Copy link
Copy Markdown
Author

zhoupb01 commented May 7, 2026

I have read the CLA Document and I hereby sign the CLA

github-actions Bot added a commit that referenced this pull request May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants