Масштабирование блестящих участков до высоты окна
Я хочу масштабировать блестящий сюжет до высоты окна. Этот связанный вопрос 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")
)
)
Ответы
Ответ 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]()