Quarto仪表板中bslib navset_*()首次切换标签显示异常问询
问题分析与解决办法
这属于bslib在Quarto静态HTML渲染中的bug,并非使用方式错误。Quarto静态渲染时,bslib的navset_*系列组件首次切换标签时,不会正确隐藏未选中的内容容器,导致多个内容同时显示;重新切换后DOM状态被修正,后续显示恢复正常,而Shiny是动态渲染模式,不存在这个静态渲染的逻辑问题。
临时解决办法:
改用Quarto原生的标签面板语法,原生组件在静态渲染下无此问题:
::: {.panel-tabset} ## Map 1 ```{r} leaflet::leaflet() %>% addTiles()Map 2
leaflet::leaflet() %>% addTiles() %>% addMarkers(lng=116.397, lat=39.908):::
若必须使用bslib组件,可给每个
nav_panel的内容外层添加hidden类,让bslib的JS逻辑自动控制显示状态:bslib::navset_tab( bslib::nav_panel("Map 1", div(class = "hidden", leaflet::leaflet() %>% addTiles())), bslib::nav_panel("Map 2", div(class = "hidden", leaflet::leaflet() %>% addTiles() %>% addMarkers(lng=116.397, lat=39.908))) )将Quarto文档改为Shiny运行时(在YAML头部添加
runtime: shiny),利用Shiny动态渲染规避静态渲染bug,但文档会变为交互式Shiny应用,无法生成纯静态HTML。
内容的提问来源于stack exchange,提问作者Chris Newton
相关产品推荐
相关产品推荐

