Shinydashboard удаляет лишнее пространство, когда заголовок отключен

Полный код / ​​файлы можно найти в этом ответе

UI.R file
library(shiny)
library(shinydashboard)
shinyUI( 
  dashboardPage(
    dashboardHeader(disable = TRUE), #title=textOutput("title")),
    dashboardSidebar(uiOutput("side")),
    dashboardBody(
          uiOutput("page")
    )))

Однако я хочу отключить заголовок на своей панели управления с помощью здесь Мне удалось отключить, но затем на моей панели инструментов появилось пустое пространство. (см. изображение, выделенное оранжевым цветом поле).

Как мне от этого избавиться? Это не только на странице входа, проблема сохраняется даже после входа в систему.  введите описание изображения здесь


person Vasim    schedule 28.09.2016    source источник


Ответы (2)


Я думаю, что на блестящей панели инструментов отсутствует функция автоматического добавления высоты заголовка к телу. Я исправил это с помощью трюка, используя JavaScript. Решение основано на добавлении 50 пикселей к атрибуту CSS min-height body сразу после создания страницы. Также я добавил прослушиватель событий, чтобы добавить 50 пикселей, если размер окна изменится.

library(shiny)
library(shinydashboard)

server <- function(input, output) {
}
ui <- dashboardPage(
  dashboardHeader(disable = TRUE),
  dashboardSidebar(),
  dashboardBody(
    tags$script('window.onload = function() {
      function fixBodyHeight() {
        var el = $(document.getElementsByClassName("content-wrapper")[0]);
        var h = el.height();
        el.css("min-height", h + 50 + "px");
      };
      window.addEventListener("resize", fixBodyHeight);
      fixBodyHeight();
    };')
  )
)

shinyApp(ui, server)
person Geovany    schedule 28.09.2016
comment
Спасибо, но как только я вхожу в систему, он снова возвращается к старому состоянию. Также боковая панель не перемещается вверх на месте заголовка. Однако большое спасибо !! - person Vasim; 29.09.2016
comment
Не могли бы вы добавить к вашему вопросу минимально воспроизводимый пример проблемы? - person Geovany; 29.09.2016
comment
Здесь в ответе приведен точный код, который я использовал. - person Vasim; 29.09.2016
comment
Для меня это решение отлично работает при изменении размера окон, но не при начальной загрузке. Я попытался добавить строку window.addEventListener("load", fixBodyHeight), но это тоже не помогло. - person Jochem; 18.05.2020

Вы можете добавить класс, а затем удалить его со стороны сервера

(идею скрытия головы см. здесь)

library(shiny)
library(shinyjs)
library(shinydashboard)
server=shinyServer(
  function(input, output,session) {
    observeEvent(input$activate,{
      js$hidehead('')  # show head
      removeClass("body_d","DISABLED") # remove class
    })
  })


ui=
shinyUI( 
  dashboardPage(
    dashboardHeader(disable = T), #title=textOutput("title")),
    dashboardSidebar(uiOutput("side")),
    dashboardBody(class="DISABLED",id="body_d",
                  useShinyjs(),
                  extendShinyjs(text = "shinyjs.hidehead = function(parm){
                                    $('header').css('display', parm);
                                }"),
      tags$style(".DISABLED { min-height: 100vh !important};
                 "),
      actionButton("activate","activate header")
    )))

shinyApp(ui,server)

Если вы не хотите показывать заголовок после чего-то - все, что вам нужно, это добавить класс и добавить css min-height: 100vh !important в качестве примера

person Batanichek    schedule 29.09.2016