将不同的 CSS 样式应用于 R Shiny 中的框元素

Applying different CSS styles to box elements in R Shiny

我有一个应用程序,我希望 main_box expand/contract 图标为白色背景的黑色文本,然后 sub_box 的选项框出现红色与白色字母。此外,我希望 sub_box 的选项框保持红色和白色字母,即使在悬停或单击时也是如此。

我能够正确实现 sub_box css,但我无法弄清楚如何将 sub_box css 从 main_box css。谁能告诉我我做错了什么?

library(shiny)
library(shinydashboard)
library(shinyWidgets)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    tags$style(HTML("
.box.box-solid > .box-header > .box-tools .btn {
  background: #fd0000;
  color: #ffffff;
}
")),
box(title = "main_box", collapsible = T,
    box(title = "sub_box",
        dropdownMenu = dropdown(label = "Options",
                                "Hello World!")
    )
)
  )
)

server <- function(input, output) { }

shinyApp(ui, server)

当前状态:

期望的最终状态:

区分这些框的一个简单方法是为它们提供 id - 请参阅以下内容:

library(shiny)
library(shinyWidgets)
library(shinydashboard)
library(shinydashboardPlus)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    tags$style(
      HTML(
        "#subbox > .box-header > .box-tools .btn {
       background: #fd0000;
       color: #ffffff;
       }"
      )
    ),
    shinydashboardPlus::box(
      id = "mainbox",
      title = "main_box",
      collapsible = TRUE,
      shinydashboardPlus::box(
        id = "subbox",
        title = "sub_box",
        dropdownMenu = dropdown(label = "Options", "Hello World!")
      )
    )
  )
)

server <- function(input, output) {}

shinyApp(ui, server)

此外,请确保解决命名空间问题。 shinydashboard::box 没有 dropdownMenu 参数 - shinydashboardPlus::box 有。