Подтвердить что ты не робот

Масштабирование блестящих участков до высоты окна

Я хочу масштабировать блестящий сюжет до высоты окна. Этот связанный вопрос SO использует только абсолютные спецификации высоты в пикселях, когда предпочтительнее height = 100%. Я отмечаю в документации, что absolutePanel может достичь этого с помощью аргументов top, bottom, left, right, но затем вы потеряете боковую панель, и в любом случае график (при масштабировании по ширине), кажется, игнорирует доступную высоту.

Я предполагаю, что это связано с html quirk, что означает, что вам нужно получить высоту с переменной javascript innerHeight. Но я не понимаю, как реализовать блестящее решение, чтобы получить ui.R, чтобы использовать это. Благодарен за любые указатели.

Базовая модель приложения для разработки:

ui.R

library(shiny)
shinyServer(
  function(input, output) {
    output$myplot <- renderPlot({
      hist(rnorm(1000))
    })
  }
)

server.R

library(shiny)
pageWithSidebar(
  headerPanel("window height check"),
  sidebarPanel(),
  mainPanel(
    plotOutput("myplot")
  )
)
4b9b3361

Ответ 1

Используйте CSS3. Объявите свой рост в единицах просмотра http://caniuse.com/#feat=viewport-units. Вы должны иметь возможность объявлять их с помощью аргумента height в plotOutput, однако shiny::validateCssUnit не распознает их, поэтому вы можете объявить их в заголовке стиля:

library(shiny)
runApp(
  list(server= function(input, output) {
    output$myplot <- renderPlot({
      hist(rnorm(1000))
    })
  }
  , ui = pageWithSidebar(
    headerPanel("window height check"),
    sidebarPanel(
      tags$head(tags$style("#myplot{height:100vh !important;}"))
    ),
    mainPanel(
      plotOutput("myplot")
    )
  )
  )
)

Это не работает в блестящем браузере, но должно работать правильно в главном браузере.

enter image description here