R中的Reactive CSS属性Shiny
问题描述:
我想用滑块选择性地控制字体缩放。这可能吗?R中的Reactive CSS属性Shiny
我附加了一个MRE,我相信这证明了我卡在哪里以及我想实现的目标。
if(!require('pacman')) {install.packages("pacman")} # Ensures that pacman is installed for auto-installation
pacman::p_load(shiny, lipsum) # automatically installs and loads packages.
ui <- fluidPage(# Sidebar with a slider input for font size
sidebarLayout(sidebarPanel(
sliderInput("font_size", "Font Size:", min = 1, max = 200, value = 70
)
),
mainPanel(
wellPanel(
id = "textPanel",
style = "overflow-y:scroll; max-height: 50vh; font-size: 70%",
#style = paste0("overflow-y:scroll; max-height: 50vh; font-size: ",
# output$text_size,"70%"),
paste0(lipsum[2:10], collapse = "")))))
# Define server logic
server <- function(input, output) {
output$text_size = renderText({input$font_size})}
# Run the application
shinyApp(ui = ui, server = server)
答
您可以使用shinyjs
运行一些JavaScript代码来改变任何CSS,在这种情况下,font-size
。
library(shiny)
library(shinyjs)
ui <- fluidPage(
shinyjs::useShinyjs(),
sidebarLayout(
sidebarPanel(
sliderInput("font_size", "Font Size:", min = 1, max = 200, value = 70)
),
mainPanel(
wellPanel(
id = "textPanel",
style = "overflow-y:scroll; max-height: 50vh; font-size: 70%",
paste0("Hello", collapse = ""))
)
)
)
server <- function(input, output) {
observeEvent(input$font_size, {
runjs(paste0('$("#textPanel").css("font-size","', input$font_size, '%")'))
})
}
shinyApp(ui = ui, server = server)