如何更改 Shiny 中 navbarPage 折叠的断点

Max*_*Max 5 html css r shiny

当在小屏幕上查看我的 Shiny 应用程序时,我想将shiny::navbarPage(collapsible = TRUE)导航元素折叠到菜单中。默认情况下,当浏览器宽度小于 940 像素时会触发折叠。有什么方法可以改变这一点,以便在稍大的浏览器宽度(例如 1200 像素)下触发折叠?

我在不使用 LESS 的情况下查看了Bootstrap 3 Navbar Collapse和Change bootstrap navbar Collapse 断点,但不知道如何让它与 Shiny 一起工作。

闪亮玩具应用程序:

library(shiny)

ui <- navbarPage("This app has a long title to take up space for the purposes of this example", collapsible = TRUE,
                 
                 tabPanel("Panel that also has a long title 1"),
                 tabPanel("Panel that also has a long title 2"),
                 tabPanel("Panel that also has a long title 3")
                 
                 )

server <- function(input, output) {}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

Por*_*hop 5

标记!您可能需要覆盖默认值,特别@media是下面示例中的 ,如果屏幕低于 1200 像素,它将崩溃。看一下使用开发工具打印的 1200 像素大小,请随意根据您的需要更改该值...

library(shiny)

navbar_js <- "@media (max-width: 1200px) {
    .navbar-header {
        float: none;
    }
    .navbar-left,.navbar-right {
        float: none !important;
    }
    .navbar-toggle {
        display: block;
    }
    .navbar-collapse {
        border-top: 1px solid transparent;
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
    }
    .navbar-fixed-top {
        top: 0;
        border-width: 0 0 1px;
    }
    .navbar-collapse.collapse {
        display: none!important;
    }
    .navbar-nav {
        float: none!important;
        margin-top: 7.5px;
    }
    .navbar-nav>li {
        float: none;
    }
    .navbar-nav>li>a {
        padding-top: 10px;
        padding-bottom: 10px;
    }
    .collapse.in{
        display:block !important;
    }
}"

ui <- navbarPage("This app has a long title to take up space for the purposes of this example", collapsible = TRUE,
                 tabPanel("Panel that also has a long title 1"),
                 tabPanel("Panel that also has a long title 2"),
                 tabPanel("Panel that also has a long title 3"),
                 tags$head(
                     tags$style(HTML(navbar_js))
                 )
)

server <- function(input, output) {}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我的救星!作为一个注释,以确保任何遇到此问题的人不会犯我刚刚犯过的菜鸟错误:您需要在您可能的任何自定义 CSS 样式表之后包含 `tags$head(tags$style(HTML(navbar_js)))` 。正在加载,否则它将被覆盖。 (2认同)
  • @Mark_1 我看到你也在`rstudio`博客上发布了这个问题,你也可以引用这个答案吗? (2认同)