R Shiny 中如何缩小单选按钮与标签的间距?
数据阿明
结论
要缩小 R Shiny 横向单选按钮圆点与标签文字之间的距离,可以给 label.radio-inline 设置 gap,并将单选框从 Bootstrap 常见的绝对定位改为正常文档流。当前样式虽然把标签设为 flex,但没有覆盖单选框的 position: absolute,因此 gap 无法按预期控制两者间距。
在现有 CSS 中调整相关规则:
#apply_rate .shiny-options-group {
display: flex !important;
flex-direction: row !important;
align-items: center !important;
justify-content: space-between !important;
}
#apply_rate label.radio-inline {
display: inline-flex !important;
align-items: center !important;
gap: 4px;
margin: 0 !important;
padding: 0 !important;
vertical-align: middle !important;
}
#apply_rate label.radio-inline > input[type='radio'] {
position: static !important;
margin: 0 !important;
flex: 0 0 auto;
}
将 gap: 4px 改为所需的像素值,即可微调圆点与文字的距离。
为什么原来的设置不够
原代码将 label.radio-inline 设为 flex,并清除了它的 padding,但只把单选框的 margin 设为零,没有取消 Bootstrap 样式中常见的绝对定位。绝对定位的输入框不参与 flex 排列,因此仅靠 margin 或 flex 对齐,无法稳定控制它与文字的间距。将输入框设为 position: static 后,圆点和标签文字会作为相邻内容排列,gap 才能控制两者之间的距离。
区分两种间距
.shiny-options-group 上的 justify-content: space-between 控制各选项组之间的分布;label.radio-inline 上的 gap 控制单个圆点与标签文字之间的距离。如果选项之间显得太分散,可以把容器的 justify-content 改为 flex-start,再用容器的 column-gap 设置选项组之间的距离:
#apply_rate .shiny-options-group {
justify-content: flex-start !important;
column-gap: 8px;
}
保留 space-between 时,浏览器会将剩余宽度分配到各选项组之间,不会改变圆点与对应文字之间由 gap 控制的距离。实际效果还会受页面宽度和加载的 Bootstrap 样式影响,可以在浏览器中微调像素值。
备注:内容仅供参考。
