Firefox 136改变了Rails+Bootstrap4单选按钮样式,如何恢复?
Firefox 136单选按钮样式变化问题及恢复方案
问题背景
在基于Ruby 2.6.6p146、Rails 6.1.3.1、Bootstrap 4.6.0的应用中,此前各浏览器单选按钮样式一致:Firefox 135.0.1及更低版本中,选中的单选按钮显示实心内圈+粗实外圈;但升级至Firefox 136后,选中状态仅显示细外圈,无实心内圈,样式出现异常。
对应的HTML代码如下:
<div class="container mt-4"> <div class="d-flex w-50 for-current-reader flex-row"> <div class="d-flex flex-column w-50 border p-1 table-info"> <fieldset class="form-group mb-0 radio_buttons optional parm_01_01_01"> <legend class="col-form-label p-0"></legend> <input type="hidden" name="parm_01_01_01" value=""> <div class="form-check"> <input class="form-check-input" id="parm_01_01_01_1" type="radio" value="1" name="parm_01_01_01"> <label class="form-check-label d-block" for="parm_01_01_01_1">Yes</label> </div> <div class="form-check"> <input class="form-check-input" id="parm_01_01_01_2" type="radio" value="2" name="parm_01_01_01"> <label class="form-check-label d-block" for="parm_01_01_01_2">No</label> </div> </fieldset> </div> </div> </div>
样式差异示意图:
变化原因
Firefox 136对原生表单控件的默认样式进行了调整,修改了单选按钮选中状态的渲染逻辑。而Bootstrap 4.6.0的表单控件样式依赖于浏览器原生样式的特定行为,此次Firefox的更新打破了原有兼容,导致Bootstrap的自定义选中样式无法正常生效。
恢复原有样式的方案
通过自定义CSS强制覆盖Firefox 136的新默认样式,仅针对Firefox生效,不影响其他浏览器:
/* 修复Firefox 136+单选按钮选中样式 */ @-moz-document url-prefix() { .form-check-input:checked { background-color: #007bff; /* 匹配Bootstrap默认主题色 */ border-color: #007bff; /* 重新添加实心内圈图标 */ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); background-position: center; background-repeat: no-repeat; background-size: 50% 50%; border-width: 2px; /* 恢复粗实外圈 */ } }
操作步骤
- 将上述CSS代码添加到你的Rails应用样式文件中(例如
app/assets/stylesheets/application.scss) - 确保这段代码在Bootstrap样式之后加载,保证优先级高于默认样式
内容的提问来源于stack exchange,提问作者moh19814
相关产品推荐
相关产品推荐

