0

我的 Shiny 应用程序中有多个 selectizeInput。它们中的大多数不应该充满变量/元素,但其中之一是肯定的。问题是框​​中的变量/元素越多,这个越大,显示效果也不好。我找到了操纵输入小部件的高度、字体、宽度等的解决方案:

    library(shiny)

    ui <- fluidPage(
      fluidRow(

        selectInput("speed", label=NULL, choices = list("1" = 1, "2" = 2), selected = 1),
        tags$head(tags$style(HTML(".selectize-input {height: 100px; width: 500px; font-size: 100px;}")))
      )

)
server <- function(input, output){}
shinyApp(ui, server)

这行得通。但是这个解决方案会影响我在我的应用程序中拥有的所有 selectizeInput,我只对一个 selectizeInput 感兴趣。有没有办法做到这一点?

4

1 回答 1

1

您可以使用一些高级 CSS 来选择该.selectize-input框。所以在selectInput结构中,具有实际id的元素被分配给一个select标签,而你想要的框是标签之后的以下标签的第一个孩子select。我们可以使用+选择以下标签,并使用选择包含以下标签的类的>第一个子项。.selectize-input

library(shiny)

ui <- fluidPage(
    tags$head(tags$style(HTML("#speed + div > .selectize-input {height: 100px; width: 500px; font-size: 100px;}"))),
    fluidRow(
        selectInput("speed", label=NULL, choices = list("1" = 1, "2" = 2), selected = 1),
        selectInput("speed2", label=NULL, choices = list("1" = 1, "2" = 2), selected = 1)
    )
)
server <- function(input, output){}
shinyApp(ui, server)

#ID + div > .selectize-input是你想申请的。

尝试运行我的示例,我创建了两个selectInput,只有第一个具有 CSS 样式。

于 2021-06-03T00:47:02.183 回答