You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shiny中将独立复选框(非复选框组)水平对齐

解决方案:将Shiny中每组复选框改为水平排列

针对你需要将每个条件对应的两个复选框(Control和Normalizing control)水平并排显示的需求,有两种简单可行的方式:

方法1:通过Flex布局直接调整UI生成逻辑

在生成每组复选框时,将两个checkboxInput包裹在一个使用Flex布局的容器中,直接实现水平排列,同时保留组间垂直间距。

修改server中output$control_checkbox的代码如下:

output$control_checkbox <- renderUI({
  num_conds <- as.integer(input$num_conds)
  
  lapply(1:num_conds, function(i) {
    div(
      # 用flex布局让内部元素水平排列,gap控制复选框间距
      style = 'display: flex; gap: 20px; padding-bottom: 7.62px;',
      checkboxInput(paste0("CTLcheckbox", i), 
                    label = paste0("Control ", i), 
                    value = FALSE),
      
      checkboxInput(paste0("normCTLcheckbox", i), 
                    label = paste0("Normalizing control ", i), 
                    value = FALSE)
    )
  })
})

方法2:通过全局CSS统一设置

如果希望用CSS统一控制样式,可在ui的tags$style中添加规则,将每个复选框的容器设为行内块元素:

tags$style('
  .checkbox {
    display: inline-block;
    margin-right: 20px; /* 调整复选框间的水平间距 */
  }
  .shiny-options-group{ 
    margin-top: 5px !important;
  }
'),

该规则会让所有checkboxInput生成的容器水平排列,同时保留组与组之间的垂直分隔。

效果说明

两种方法都能实现每组内复选框的水平并排,且完全保留每个复选框独立绑定对应textInput内容的功能,无需改用checkboxGroupInput。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:37:21