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

如何在Shiny应用标题栏的应用名称前显示图标?

在Shiny应用标题栏添加图标的可行方案

嘿,我懂你想给Shiny应用的标题栏加图标的需求,之前直接在title参数里写HTML标签没生效太正常了——fluidPage的title参数默认只会把内容当成纯文本解析,不会识别HTML。下面给你两种实用的解决办法,对应不同的场景:

方法1:给浏览器标签栏添加Favicon小图标

如果你的需求是在浏览器标签的应用名称左边显示一个专属小图标(就是常见的网站小图标),可以通过在UI中插入link标签来实现:

  1. 准备好你的图标文件(推荐格式为.ico,把它放在Shiny应用的根目录下);
  2. 在fluidPage里通过tags$head插入图标引用代码。

示例代码:

library(shiny)

ui = shinyUI(
  fluidPage(
    # 插入Favicon到浏览器标题栏
    tags$head(
      tags$link(rel = "icon", type = "image/x-icon", href = "favicon.ico")
    ),
    title = "My App",
    selectInput(inputId = "Pick", label = "Choose", choices = c('A', 'B', 'C'), 
                selected = NULL, multiple = FALSE, selectize = TRUE, size = NULL, width = 300)
  )
)

server = function(input, output, session) {
}

shinyApp(ui = ui, server = server)

方法2:在页面内的应用标题前添加图标

如果你是想在页面顶部显示的应用标题文字前加图标(比如页面里的标题,而非浏览器标签),可以用HTML()函数包裹带图标的标题内容,Shiny内置了Font Awesome图标库,直接用就行:

示例代码:

library(shiny)

ui = shinyUI(
  fluidPage(
    # 用HTML()解析带图标的标题内容
    title = HTML('<i class="fa fa-star"></i> My App'),
    selectInput(inputId = "Pick", label = "Choose", choices = c('A', 'B', 'C'), 
                selected = NULL, multiple = FALSE, selectize = TRUE, size = NULL, width = 300)
  )
)

server = function(input, output, session) {
}

shinyApp(ui = ui, server = server)

你可以把fa fa-star换成其他Font Awesome图标类名,比如fa fa-home、fa fa-cog,来匹配你的需求。

为什么之前的方法没生效?

fluidPage的title参数默认会对传入的内容做HTML转义,所以你直接写的HTML标签会被当成普通文字显示,而用HTML()函数可以告诉Shiny不要转义,直接解析HTML内容;而浏览器标签的Favicon需要通过专门的link标签来定义,所以不能直接写在title里。

内容的提问来源于stack exchange,提问作者Bogaso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:50:31