2016-09-28 2 views
1

Весь код/​​файлы можно найти в этом answerShinydashboard удалить дополнительное пространство, когда заголовок выключен

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

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

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

ответ

3

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

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) 
+0

Спасибо, но как только я запишу его в систему, снова вернется в старое состояние. Также панель боковой панели не перемещается вверх по месту заголовка. Большое спасибо! – Vasim

+0

Можете добавить к вашему вопросу минимальный воспроизводимый пример проблемы? – Geovany

+0

[Здесь] (http://stackoverflow.com/questions/33814656/different-pages-in-shiny-app) в ответе, это точный код, который я использовал – Vasim

0

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

(идея спрятать голову получить here)

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 в качестве примера