首页 > 解决方案 > 闪亮的仪表板更改 slectInput 的背景颜色

问题描述

我有一个带有多个 selectInputs 的 Shiny Dashabord。现在,如果单击了默认值之外的值,我想更改 selectInput 的背景颜色。

所以这里有一个代码片段:

dbHeader <- dashboardHeader(
  title = "Test",
  titleWidth = "400px"
)

ui <- dashboardPage(
  dbHeader,
  dashboardSidebar(
    uiOutput("filter_head")
  ),
  dashboardBody(
    #some content
  )
)

server <- function(input, output, session) {
output$filter_head <- renderUI({
  column(
      12,
      selectInput("select_1", h3("Select1"),
        c(
          "Default", "A", "B",
          "C",
          "D"
        ), selected = "Default", selectize = FALSE, multiple = F)
      ),
 selectInput("select_2", h3("Select2"),
        c(
          "Default", "A", "B",
          "C",
          "D"
        ), selected = "Default", selectize = FALSE, multiple = F)
      )
)
    })
}
shinyApp(ui, server)

因此,如果在 select_1 处未选择默认值,则 select_1 的背景应为红色,否则为白色。但仅适用于 select_1 输入。这可能吗?

标签: rshinyshinydashboard

解决方案


好,我知道了。使用 uiOutput 和 if else 语句。

我创建了一个新的 uiOutput 元素并使用了 render 方法中的语句:

uiOutput("style_select_1")      

output$style_select_1<- renderUI({
        if(is.null(input$select_1)){
          return()
        }
        else if(input$select_1!= 'Default'){
          return(tags$style("#select_1{background-color:red;color:white;}"))
        }
      })

推荐阅读