R shiny:根据输入更改背景颜色
R shiny : change background color based on input
我是 R shiny 的新手,我有以下内容 ui:
ui <- shinyUI(fluidPage(
titlePanel(textOutput("title")),
selectInput("tool", "Choose your tool",
choices = c("Tool 1", "Tool 2",
"Tool 3"),
selected = "Tool 1", multiple = FALSE
)
)
)
我想做的是根据select输入“工具”的结果改变整个网页的背景颜色。例如,如果用户 select 的“工具 1”,背景颜色将为红色;如果用户 select 的“工具 2”,背景颜色将为橙色,依此类推。
谢谢
我相信有更好的方法可以做到这一点,但这个解决方案有效。这个想法是在每次 input$tools 更改时渲染一个 UI,以便可以修改 tags$style。
library(shiny)
library(tidyverse)
ui <- fluidPage(
selectInput("tool", "Choose your tool",
choices = c("Tool 1", "Tool 2",
"Tool 3"),
selected = "Tool 1", multiple = FALSE),
uiOutput('background_change') )
server <- function(input, output, session) {
bg <- reactive({
case_when(input$tool =='Tool 1' ~ 'body {
background-color: red;
color: white;
}',
input$tool =='Tool 2' ~ 'body {
background-color: orange;
color: white;
}',
input$tool =='Tool 3' ~ 'body {
background-color: brown;
color: white;
}',
TRUE ~ 'body {
background-color: red;
color: white;
}')
})
output$background_change <- renderUI({
tagList(fluidPage(tags$style(HTML(bg()))))
})
}
shinyApp(ui, server)
我是 R shiny 的新手,我有以下内容 ui:
ui <- shinyUI(fluidPage(
titlePanel(textOutput("title")),
selectInput("tool", "Choose your tool",
choices = c("Tool 1", "Tool 2",
"Tool 3"),
selected = "Tool 1", multiple = FALSE
)
)
)
我想做的是根据select输入“工具”的结果改变整个网页的背景颜色。例如,如果用户 select 的“工具 1”,背景颜色将为红色;如果用户 select 的“工具 2”,背景颜色将为橙色,依此类推。
谢谢
我相信有更好的方法可以做到这一点,但这个解决方案有效。这个想法是在每次 input$tools 更改时渲染一个 UI,以便可以修改 tags$style。
library(shiny)
library(tidyverse)
ui <- fluidPage(
selectInput("tool", "Choose your tool",
choices = c("Tool 1", "Tool 2",
"Tool 3"),
selected = "Tool 1", multiple = FALSE),
uiOutput('background_change') )
server <- function(input, output, session) {
bg <- reactive({
case_when(input$tool =='Tool 1' ~ 'body {
background-color: red;
color: white;
}',
input$tool =='Tool 2' ~ 'body {
background-color: orange;
color: white;
}',
input$tool =='Tool 3' ~ 'body {
background-color: brown;
color: white;
}',
TRUE ~ 'body {
background-color: red;
color: white;
}')
})
output$background_change <- renderUI({
tagList(fluidPage(tags$style(HTML(bg()))))
})
}
shinyApp(ui, server)