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

如何在Shiny的radioButtons中实现无按钮的加粗子标题?

解决Shiny radioButtons添加加粗无按钮子标题的问题

要实现radioButtons侧边栏中"Yes""No"作为加粗子标题且无对应单选按钮的效果,可以通过HTML自定义内容+CSS样式调整来实现,以下是修改后的完整方案:

修改后的代码

library(shiny)

ui <- fluidPage(
  # 添加自定义CSS样式
  tags$head(
    tags$style(HTML("
      /* 隐藏子标题对应的单选按钮 */
      .radio-subtitle ~ input[type='radio'] {
        display: none;
      }
      /* 给子标题添加上下间距,区分分组 */
      .radio-subtitle {
        margin-top: 10px;
        margin-bottom: 5px;
        font-size: 1.1em;
      }
    "))
  ),
  sidebarLayout(
    sidebarPanel(
      radioButtons(
        inputId = "ProjectID",
        label = strong("选择项目:"),
        selected = "2",
        choiceNames = list(
          # 带自定义类的加粗子标题
          HTML('<div class="radio-subtitle"><strong>Yes</strong></div>'),
          "2", "7", "9", "14", "15", "16", "23", "25", "26", "40", "42", "48", "55", "70", "76", "81", "94",
          HTML('<div class="radio-subtitle"><strong>No</strong></div>'),
          "S8", "43", "62", "63", "69", "74", "86", "91", "95"
        ),
        choiceValues = c(
          "", # 子标题对应空值,不会被选中
          "2", "7", "9", "14", "15", "16", "23", "25", "26", "40", "42", "48", "55", "70", "76", "81", "94",
          "",
          "S8", "43", "62", "63", "69", "74", "86", "91", "95"
        )
      )
    ),
    mainPanel(
      verbatimTextOutput("选中的项目")
    )
  )
)

server <- function(input, output) {
  output$选中的项目 <- renderPrint({
    input$ProjectID
  })
}

shinyApp(ui, server)

关键修改说明

  1. 修复标签错误:原代码中<strong>标签未闭合,修正为正确的<strong>Yes</strong>格式
  2. 添加CSS样式:
    • 用CSS选择器.radio-subtitle ~ input[type='radio']隐藏子标题对应的单选按钮
    • 给子标题添加上下间距和字体放大,让分组视觉更清晰
  3. 保留选择逻辑:子标题对应的choiceValue设为空字符串,确保不会被选中,不影响原有项目的选择功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:37:14