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

Rmd flexdashboard如何在navbar右侧添加动态自定义文本

flexdashboard导航栏右侧添加自定义文本实现方案

两种方案都能实现需求,按需选择即可。

方案1:YAML原生配置(最简单,适配绝大多数场景)

flexdashboard本身内置了导航栏左右侧自定义配置项,不需要额外写前端代码,直接在YAML头的输出配置里加navbar字段,通过right参数指定要放在右侧的内容即可,完全支持R内联代码实现动态文本渲染。
修改后的YAML配置参考:

title: "Influencer Adex Report"
date: "`r analysis_date`"
Author: 'Peter Fico'
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    navbar:
      right:
        - text: "`r paste0('分析日期: ', analysis_date)`"
        - icon: "fa-user"
          text: "负责人: Peter Fico"

配置使用注意点:

  • text字段支持任意合法的R内联表达式,只要返回字符串即可,动态内容可以直接通过R代码生成
  • 支持同时添加多个右侧元素,会按书写顺序从左到右排布
  • 内置支持Font Awesome图标,直接配置icon参数即可使用,不需要额外引入前端资源
    渲染后内容会自动排布在导航栏右侧,和目标效果完全一致。

方案2:JS注入自定义(适合高定制化需求)

如果需要做更复杂的效果,比如文本随页面交互实时更新、自定义文本样式、加特殊交互元素,可以在文档内嵌入一小段JS,直接向导航栏注入自定义元素。
把下面的代码块放到Rmd文档的任意位置(建议放在开篇第一个R代码块之后)即可:

```{js, echo=FALSE}
document.addEventListener('DOMContentLoaded', function() {
  // 定位导航栏右侧容器
  const rightNav = document.querySelector('.nav.navbar-nav.navbar-right')
  // 创建自定义内容节点,可自行调整样式、内容
  const customItem = document.createElement('li')
  customItem.innerHTML = `<span style="color:#fff;margin-right:1rem;padding-top:15px;display:inline-block;">数据最后更新时间:${new Date().toLocaleString()}</span>`
  // 插入到导航栏右侧
  rightNav.prepend(customItem)
})
```

如果需要把R环境里的动态变量传入JS使用,加一个R代码块把变量挂载到JS全局环境即可,示例:

```{r, echo=FALSE}
tags$script(paste0("window.reportUpdateTime = '", analysis_date, "'"))
```

之后在上面的JS代码里直接调用window.reportUpdateTime就能拿到R侧传递的动态值,实现完全自定义的动态内容展示。

内容的提问来源于stack exchange,提问作者Dr-Mozart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:42:53