如何在 R Shiny 中设置单个选择输入菜单的样式



您可以将css样式应用于单个选择输入菜单吗?

我在其他文章中找到了处理样式选择输入菜单的代码,但结果会影响应用程序中的所有代码。我只想操作单个菜单。我还在考虑根据服务器中发生的条件为单个元素添加样式,但这是另一个单独的问题。

测试应用代码:

library(shiny)
library(shinydashboard)
library(shinyjs)
ui  <- 
  fluidPage(
  hr("how do we get the change the style elements of a single select input?) 
tags$style(type='text/css',  .selectize-input  { font-size: 8px; line-height: 8px;} 
             .selectize-dropdown { font-size: 8px; line-height: 8px; }"),
    selectInput("choice", "choices", c("A", "B", "C")),
    selectInput("choice2", "choices", c("D", "E", "F"))
     )
server < - function(input, output, session) {   }
})
shinyApp(ui = ui, server = server)

这种方法直接来自Dean Attali在这里的回答:examp,并且提出了一个类似的问题作为最终评论,但没有答案,所以我决定就此事发布一个问题,因为我有同样的问题。

对于其他元素,如文本输入字段,我通常这样做的方式是这样的:

tags$style(type='text/css', "#NAMEELEMENT {background-color: green; height: 40px; border-color: #bfbfbf; width: 520px; position: relative;left: 3%}"), 

您可以在其中通过 # 及其 inputId 将 tag$style 附加到元素。

干杯。

我自己找到了答案。结合决心,谷歌和Stackoverflow等上的大量时间,我相信我发现Dean Atali创建的一些信息,但这似乎做到了:

  tags$head(tags$style(HTML('.selectize-input {white-space: nowrap}
    #choice+ div>.selectize-dropdown{width: 660px !important}
    #choices+ div>.selectize-dropdown{width: 300px !important}')))

你的选择输入包装在div 中:

tags$div(id='my_div',
         class='my_class',
         selectInput("choice",
                     "choices",
                      c("A", "B", "C"))),

然后,您可以在不影响其他选择输入元素的情况下设置其样式:

#my_div .selectize-dropdown-content > .option {
   background-color: grey;
}

.my_class .selectize-dropdown-content > .option {
   background-color: grey;
}

与 CSS 一样,使用 id 来命名和捕获单个元素,并使用class来设置多个元素的样式。

谢谢你,非常有用!

我用一个工作示例总结了您的答案:

library(shiny)
ui <- fluidPage(
  tags$head(tags$style(HTML('
    .selectize-input {white-space: nowrap}
    #input1+ div>.selectize-dropdown{width: 660px !important; font-style: italic; font-weight: bold; color: green;}
    #input1+ div>.selectize-input{width: 660px !important; font-style: italic; font-weight: bold; color: green; margin-bottom: -10px;}
    #input2+ div>.selectize-dropdown{width: 300px !important; color: red;}
    #input2+ div>.selectize-input{width: 300px !important; color: red; margin-bottom: 0px;}
                            '))),
  selectizeInput("input1", "label1", c("A", "B", "C")),
  selectizeInput("input2", "label2", c("D", "E", "F"))
)
server <- function(input, output, session){}
shinyApp(ui = ui, server = server)

相关内容

  • 没有找到相关文章

最新更新