如何在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)
关键修改说明
- 修复标签错误:原代码中
<strong>标签未闭合,修正为正确的<strong>Yes</strong>格式 - 添加CSS样式:
- 用CSS选择器
.radio-subtitle ~ input[type='radio']隐藏子标题对应的单选按钮 - 给子标题添加上下间距和字体放大,让分组视觉更清晰
- 用CSS选择器
- 保留选择逻辑:子标题对应的
choiceValue设为空字符串,确保不会被选中,不影响原有项目的选择功能
内容的提问来源于stack exchange,提问作者Nader Mehri
相关产品推荐
相关产品推荐

