Skip to content

fix(Fluent): 主题复选框负边距规则导致 BootstrapInputGroup 内 Checkbox 显示异常 #1107

Description

@h2ls

问题描述

使用 Fluent 主题(BootstrapBlazor.Theme.Fluent)时,BootstrapInputGroup 中的 Checkbox 显示异常:勾选框被拖向左侧、压到单元格边框上(如 CountUp 示例页的配置区)。

根因分析

组件库将 input-group 内的复选框布局为居中的 flex 单元格(.input-group > .form-check,自带 padding: .375rem .75rem,勾选框边距 margin: 3px 0 1px 0)。

而 Fluent 主题的独立复选框度量规则:

.form-check:not(:where(...)) .form-check-input {
    width: 16px;
    height: 16px;
    margin-top: 2px;
    margin-left: -28px;
}

与组件库的 .form-check .form-check-input 同为 0-2-0 优先级,但主题后加载,margin-left: -28px 覆盖了组件库的边距。该负边距本是配合独立布局的 padding-left: 28px 把勾选框拉回填充区的技巧;在 input-group 里单元格的 padding-left 仍是组件库的 .75rem(组件库 .input-group > .form-check 为 0-2-0,高于主题 .form-check 的 0-1-0),负边距却把勾选框向左拖了 28px,压到单元格边框上。

修复方案

fluent.css(及 fluent.min.css)中针对 input-group 场景补充恢复规则(0-3-0 优先级,高于主题度量规则且后加载):

.input-group > .form-check .form-check-input {
    margin: 3px 0 1px 0; /* 与组件库 Checkbox.razor.scss 一致 */
}

独立复选框、Switch、各尺寸变体(form-check-sm…xxl)不受影响。

修复分支:fix/fluent-input-group-checkbox

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions