如何在Shiny中调整Date Range picker层级使其置于顶层不被遮挡
问题描述
我已经将R和Shiny升级至最新版本,该版本下日期范围选择器会被页面标题遮挡,难以选择年份,需要将该组件调整到顶层。
我认为需要添加对应的CSS代码实现该需求,恳请大家提供相关解决方案,以下是我的代码片段:
tabPanel("Rank IPL Batsmen", h4('Rank IPL Batsmen'), sidebarPanel( uiOutput("dateRange5"), sliderInput("minMatches", "Matches played", min = (helper(IPLTeamNames,"./ipl/iplBattingBowlingDetails")[[3]]), max = (helper(IPLTeamNames,"./ipl/iplBattingBowlingDetails")[[4]]), value =round(((helper(IPLTeamNames,"./ipl/iplBattingBowlingDetails")[[3]]) + (helper(IPLTeamNames,"./ipl/iplBattingBowlingDetails")[[4]]))/2) ), uiOutput("Mode") ),
解决方案
通过自定义CSS提升日期范围选择器弹窗的层级即可解决遮挡问题,操作如下:
在Shiny的UI代码开头添加针对日期选择器的样式规则,给.daterangepicker类设置足够高的z-index属性,修改后的完整代码示例:
# 在UI定义的最开头添加以下CSS代码 tags$head( tags$style(HTML(" .daterangepicker { z-index: 9999 !important; } ")) ) # 原有业务代码保持不变 tabPanel("Rank IPL Batsmen", h4('Rank IPL Batsmen'), sidebarPanel( uiOutput("dateRange5"), sliderInput("minMatches", "Matches played", min = (helper(IPLTeamNames,"./ipl/iplBattingBowlingDetails")[[3]]), max = (helper(IPLTeamNames,"./ipl/iplBattingBowlingDetails")[[4]]), value =round(((helper(IPLTeamNames,"./ipl/iplBattingBowlingDetails")[[3]]) + (helper(IPLTeamNames,"./ipl/iplBattingBowlingDetails")[[4]]))/2) ), uiOutput("Mode") ),
其中z-index: 9999可以保证日期选择器弹窗的层级高于绝大多数页面元素,!important可以强制覆盖组件自带的样式优先级,避免规则不生效。
内容的提问来源于stack exchange,提问作者Tinniam V. Ganesh
相关产品推荐
相关产品推荐

