如何让shinyWidgets中的dropdownButton始终显示在顶层?
解决Shiny中Dropdown被rhandsontable遮挡的问题
这个问题是因为rhandsontable渲染的表格元素默认层级(z-index)高于shinyWidgets的dropdown菜单,导致菜单被遮挡。你可以通过自定义CSS提升dropdown菜单的层级来解决:
在UI中添加一段CSS样式,强制设置dropdown菜单的z-index为更高的值:
tags$style(HTML(" .shiny-dropdown .dropdown-menu { z-index: 9999 !important; } "))
修改后的完整代码如下:
library(shiny) library(shinyWidgets) library(shinydashboard) library(rhandsontable) factorUI <- function(id) { ns <- NS(id) box( width=6, title = "Charts", closable = TRUE, status = "danger", solidHeader = TRUE, collapsible = TRUE, dropdown( style = "material-circle", selectInput(ns("options"),"Select an option:", choices = list("All" = "all", "Option1" = "option1","Option2" = "option2"),selected = "all"), conditionalPanel("input.options == 'option1'",ns=ns, sliderInput(ns("shr.month"),"No of months:",min=0,max=1,value=c(0,1),step = 1)), conditionalPanel("input.options == 'option2'",ns=ns, sliderInput(ns("fh.month"),"No of months:",min=0,max=1,value=c(0,1),step = 1)), conditionalPanel("input.manual == 'Y'",fileInput(ns("upload"),"Upload new pattern",accept = ".csv")), materialSwitch(inputId = ns("factorind"),label = "Apply factor",status = "primary",right = TRUE), conditionalPanel("input.factorind == true",ns=ns, numericInput(ns("start"),"Apply from:",value = NULL,min=0,step=1), numericInput(ns("factor"),"Factor:",value=NULL,min=0)), id = ns("sidebar"), status = "danger", size = "sm", icon = shiny::icon("sliders")), rHandsontableOutput(ns("table")), ) } factor <- function(id) {( moduleServer( id, function(input,output,session) { output$table <- renderRHandsontable({ rhandsontable(iris) }) } ) )} ui <- fluidPage( tags$style(HTML(" .shiny-dropdown .dropdown-menu { z-index: 9999 !important; } ")), titlePanel("Example"), sidebarLayout( sidebarPanel(), mainPanel(factorUI("test")) ) ) server <- function(input, output) { factor("test") } shinyApp(ui = ui, server = server)
这段CSS会针对shinyWidgets生成的dropdown菜单设置极高的z-index值,确保它始终显示在rhandsontable表格的上方。
内容的提问来源于stack exchange,提问作者southwind
相关产品推荐
相关产品推荐

