我selectInput
在 UI 中有一个闪亮的应用程序。
假设我的用户界面中有:
selectInput("my_select_input", "Select Letter", c("A", B", "C", "D"))
Run Code Online (Sandbox Code Playgroud)
我想指定的箱子A
和C的选择应该充满蓝色和用于箱子B
和D
应充满红色。
我建议使用 CSS。有关如何使用 CSS 设置 Shiny 应用程序样式的更多信息,请参阅本文。
我已经包含了一个演示应用程序,其中包含 CSS 作为字符串。在实践中,我会将 CSS 样式存储在一个单独的文件中,请参阅上面链接的文章。如果您不熟悉 CSS,我将简要总结所使用的选择器,更多关于 CSS 选择器的信息请点击此处。
CSS 选择器总结,
#my_select_input
寻找带有 id 的标签 my_select_input
~ .selectize-control
说我们实际上想要一个兄弟标签,#my_select_input
并且这个兄弟必须有这个类selectize-control
.option
说我们想要上述标签的子标签,并且这些子标签必须具有类 option
:nth-child(odd)
和:nth-child(even)
我们能够控制其子标签的风格都将应用到,在odd
选择第一,第三和第五(等)的孩子,even
选择第二,第四和第六(等等)的孩子。综上所述,这里是演示应用程序。
library(shiny)
shinyApp(
ui = fluidPage(
tags$head(
tags$style("
#my_select_input ~ .selectize-control .option:nth-child(odd) {
background-color: rgba(30,144,255,0.5);
}
#my_select_input ~ .selectize-control .option:nth-child(even) {
background-color: rgba(205,92,92,0.5);
}
"
)
),
selectInput(
inputId = "my_select_input",
label = "Select Letter",
choices = c("A", "B", "C", "D")
)
),
server = function(input, output) {
}
)
Run Code Online (Sandbox Code Playgroud)
如果您想将红色/蓝色着色应用于应用程序中的所有选择输入,您可以删除#my_select_input ~
前缀。如果您想将此样式的变体应用于不同的选择输入,您可以更改my_select_input
和调整背景颜色。