我想构建一个多页闪亮应用程序,我可以在其中控制用户可以看到哪个页面。迪安·阿塔利确实这个演示应用程序中有类似的东西 https://github.com/daattali/advanced-shiny/tree/master/multiple-pages, using shinyjs
隐藏和显示每个页面。
我想也有办法做到这一点using navbar(), navlist() or tabsetPanel() https://shiny.rstudio.com/articles/layout-guide.html,如果可以隐藏导航栏或导航列表。优点是只需通过以下方式更新页面updateTabsetPanel()
, updateNavbarPage()
or updateNavlistPabel()
, 然后shinyjs
不再需要了。
所以我的问题是:如何隐藏 navbarPanel() 的导航栏,例如使用 CSS?
可以在此处找到示例应用程序:https://shiny.rstudio.com/gallery/navbar-example.html https://shiny.rstudio.com/gallery/navbar-example.html。我尝试在此示例中包含一些 CSS 来隐藏导航栏,但到目前为止,我只能隐藏所有内容(通过将 .navbar 设置为visibility:hidden)或除 navbar-title 之外的所有内容(通过将 .navbar-nav 设置为visibility) :隐)。要隐藏的正确元素是什么?或者要隐藏的元素和要再次可见的子元素的正确组合是什么?
EDIT:正如 Chabo 指出的那样 - 主要问题似乎是当导航栏的可见性设置为隐藏,甚至显示=无时,应用程序不会设置活动选项卡,因此不会显示任何其他内容。
#https://shiny.rstudio.com/gallery/navbar-example.html
library(shiny)
ui<- navbarPage("Navbar!",
tags$head(
#here something is wrong.
# .navbar makes everything invisible
#.navbar-nav makes everything invisible but the navbar-title
tags$style(HTML("
.navbar-nav{
visibility: hidden;
}
")
)
),
tabPanel("Plot",
sidebarLayout(
sidebarPanel(
radioButtons("plotType", "Plot type",
c("Scatter"="p", "Line"="l")
)
),
mainPanel(
plotOutput("plot")
)
)
),
tabPanel("Summary",
verbatimTextOutput("summary")
)
)
server<- function(input, output, session) {
output$plot <- renderPlot({
plot(cars, type=input$plotType)
})
output$summary <- renderPrint({
summary(cars)
})
output$table <- DT::renderDataTable({
DT::datatable(cars)
})
}
shinyApp(ui, server)