根据窗户大小调整盒子的高度和重量

时间:2015-08-09 07:28:05

标签: shiny rstudio

我正在尝试使用此代码根据窗口大小自动调整框的高度和重量,即,在最大化窗口的同时,我闪亮的应用程序中的框也应调整其大小。

points()

框的宽度是根据应用程序窗口大小改变其大小,但高度不是?

1 个答案:

答案 0 :(得分:2)

请注意plotOutput的文档说"请注意,对于身高,请使用" auto"或" 100%"通常不会按预期工作,因为使用HTML / CSS计算高度。"

这是一个使用JavaScript来计算浏览器窗口高度的解决方案,将该数字保存为Shiny输入,并将其用作height plotOutput }。请记住,可能还有其他方法,我很乐意看到还能做些什么,但这是我们首先想到的。

library(shiny)
library(shinyjs)

shinyjscode <- "
shinyjs.init = function() {
  $(window).resize(shinyjs.calcHeight);
}
shinyjs.calcHeight = function() { 
  Shiny.onInputChange('plotHeight', $(window).height());
}
"

runApp(shinyApp(
  ui = fluidPage(
    shinyjs::useShinyjs(),
    shinyjs::extendShinyjs(text = shinyjscode),
    plotOutput("plot")
  ),
  server = function(input, output, session) {
    plotHeight <- reactive({ 
      ifelse(is.null(input$plotHeight), 0, input$plotHeight)
    })

    output$plot <- renderPlot({
      plot(1:10)
    },
    height = plotHeight)

    js$calcHeight()
  }
))