You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.10 05:02:02