【问题标题】:Dynamically sized sidebarPanel and mainPanel in ShinyShiny 中动态调整大小的侧边栏面板和主面板
【发布时间】:2021-06-09 10:25:16
【问题描述】:

我正在尝试创建一个 Shiny 应用程序,它在 sidebarPanel 中动态生成 UI 输入选项,在 mainPanel 中生成绘图。在实际代码中,sidebarPanel 和 mainPanel 比大多数显示器允许的要长得多。因此,我希望它们在顶部显示 titlePanel 时独立滚动。

下面是一个最小的可重现示例。我手动将最大高度定义为 925 像素。这适用于 1080p 的浏览器,但在 1440p 显示器上它看起来有点傻,因为 max-height 参数使侧边栏仍以 925px 滚动。如果我设置 max-height: 100%,溢出根本不起作用,只有主页滚动。如何获得独立滚动的 sidebarPanel 和 mainPanel 并根据浏览器窗口动态调整大小?

ui = fluidPage (
    titlePanel("Test Server"),
    sidebarLayout(position = "right",
        sidebarPanel(
            width = 2,
            style = paste0("overflow-y: scroll;
                            max-height: 925px;"),
            tags$html(tags$h1("This")),tags$html(tags$h1("is")),tags$html(tags$h1("dummy")),tags$html(tags$h1("content")),tags$html(tags$h1("to")),tags$html(tags$h1("force")),tags$html(tags$h1("the")),tags$html(tags$h1("page")),tags$html(tags$h1("to")),tags$html(tags$h1("scroll")),
            tags$html(tags$h1("This")),tags$html(tags$h1("is")),tags$html(tags$h1("dummy")),tags$html(tags$h1("content")),tags$html(tags$h1("to")),tags$html(tags$h1("force")),tags$html(tags$h1("the")),tags$html(tags$h1("page")),tags$html(tags$h1("to")),tags$html(tags$h1("scroll")),
        ),
        mainPanel(
            width = 10,
            style = paste0("overflow-y: scroll;
                            max-height: 925px;"),
            tags$html(tags$h1("This")),tags$html(tags$h1("is")),tags$html(tags$h1("dummy")),tags$html(tags$h1("content")),tags$html(tags$h1("to")),tags$html(tags$h1("force")),tags$html(tags$h1("the")),tags$html(tags$h1("page")),tags$html(tags$h1("to")),tags$html(tags$h1("scroll")),
            tags$html(tags$h1("This")),tags$html(tags$h1("is")),tags$html(tags$h1("dummy")),tags$html(tags$h1("content")),tags$html(tags$h1("to")),tags$html(tags$h1("force")),tags$html(tags$h1("the")),tags$html(tags$h1("page")),tags$html(tags$h1("to")),tags$html(tags$h1("scroll")),
        )
    )
)
server = function(input, output) { 
}
shinyApp(ui = ui, server = server)

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    借鉴here的思路你的代码可以调整实现两个面板的独立滚动!

    最好的问候, 莉亚

    ui = fluidPage (
      titlePanel("Test Server"),
      sidebarLayout(position = "right",
                    sidebarPanel(
                      width = 2,
                      style = paste0("height: 90vh; overflow-y: auto;"), ##CHANGE
                      tags$html(tags$h1("This")),tags$html(tags$h1("is")),tags$html(tags$h1("dummy")),tags$html(tags$h1("content")),tags$html(tags$h1("to")),tags$html(tags$h1("force")),tags$html(tags$h1("the")),tags$html(tags$h1("page")),tags$html(tags$h1("to")),tags$html(tags$h1("scroll")),
                      tags$html(tags$h1("This")),tags$html(tags$h1("is")),tags$html(tags$h1("dummy")),tags$html(tags$h1("content")),tags$html(tags$h1("to")),tags$html(tags$h1("force")),tags$html(tags$h1("the")),tags$html(tags$h1("page")),tags$html(tags$h1("to")),tags$html(tags$h1("scroll")),
                    ),
                    mainPanel(
                      width = 10,
                      style = paste0("height: 90vh; overflow-y: auto;"),##CHANGE
                      tags$html(tags$h1("This")),tags$html(tags$h1("is")),tags$html(tags$h1("dummy")),tags$html(tags$h1("content")),tags$html(tags$h1("to")),tags$html(tags$h1("force")),tags$html(tags$h1("the")),tags$html(tags$h1("page")),tags$html(tags$h1("to")),tags$html(tags$h1("scroll")),
                      tags$html(tags$h1("This")),tags$html(tags$h1("is")),tags$html(tags$h1("dummy")),tags$html(tags$h1("content")),tags$html(tags$h1("to")),tags$html(tags$h1("force")),tags$html(tags$h1("the")),tags$html(tags$h1("page")),tags$html(tags$h1("to")),tags$html(tags$h1("scroll")),
                    )
      )
    )
    server = function(input, output) { }
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 谢谢!我显然对 CSS 不是很熟悉。我以前没见过 vh 单元,这正是我需要的。
    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2013-02-19
    • 1970-01-01
    相关资源
    最近更新 更多