您可以将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)