如何在Shiny应用标题栏的应用名称前显示图标?
在Shiny应用标题栏添加图标的可行方案
嘿,我懂你想给Shiny应用的标题栏加图标的需求,之前直接在title参数里写HTML标签没生效太正常了——fluidPage的title参数默认只会把内容当成纯文本解析,不会识别HTML。下面给你两种实用的解决办法,对应不同的场景:
方法1:给浏览器标签栏添加Favicon小图标
如果你的需求是在浏览器标签的应用名称左边显示一个专属小图标(就是常见的网站小图标),可以通过在UI中插入link标签来实现:
- 准备好你的图标文件(推荐格式为
.ico,把它放在Shiny应用的根目录下); - 在
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
相关产品推荐
相关产品推荐

