如何在bs4Dash(>2.0) R Shiny应用中永久设置导航栏主题色为黄色
解决方案
要实现bs4Dash ≥2.0版本导航栏颜色永久固定为#ffc107、不受深浅主题切换影响,直接通过自定义高优先级CSS覆盖默认样式即可,修改后的完整可运行代码如下:
if (interactive()) { library(shiny) library(bs4Dash) shinyApp( ui = dashboardPage( header = dashboardHeader(), sidebar = dashboardSidebar( sidebarMenu( menuItem( text = "Item 1" ), menuItem( text = "Item 2" ) ) ), body = dashboardBody( # 加入自定义CSS强制覆盖导航栏样式 tags$head( tags$style( " /* 强制导航栏背景色为黄色,优先级最高不受主题切换影响 */ .main-header.navbar, .main-header .navbar { background-color: #ffc107 !important; } /* 调整导航栏上文字、图标颜色为深色,保证在黄色背景上清晰可见 */ .main-header .nav-link, .main-header .navbar-brand, .main-header .sidebar-toggle { color: #212529 !important; } " ) ) ), controlbar = dashboardControlbar(skinSelector(), pinned = TRUE), title = "Skin Selector" ), server = function(input, output) { } ) }
原理说明
- 自定义CSS中添加的
!important标识会将样式优先级提到最高,不管深浅主题切换时注入的新样式优先级多高,都不会覆盖强制设置的黄色背景 - 如果你不需要保留主题切换功能,也可以直接删除controlbar中的
skinSelector()组件,上述CSS依然生效 - 若需要调整导航栏文字颜色,只需要修改第二个CSS规则的
color属性值即可
内容的提问来源于stack exchange,提问作者Narendra Sahu
相关产品推荐
相关产品推荐

