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

shinydashboardPlus中菜单项箭头图标无法旋转问题求助

解决shinydashboardPlus菜单项箭头无法旋转的问题

当用shinydashboard::dashboardPage()构建界面时,带子菜单的菜单项箭头会随展开/折叠自动旋转,但换成shinydashboardPlus::dashboardPage()后,这个旋转效果就失效了。这是因为shinydashboardPlus的默认样式覆盖了shinydashboard中原有的箭头旋转逻辑,以下是两种可行的修复方案:

方案一:添加自定义CSS恢复旋转效果

在dashboardBody中插入自定义CSS,补全箭头旋转的样式规则:

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)

header <- shinydashboard::dashboardHeader()

sidebar <- shinydashboard::dashboardSidebar(
  sidebarMenu(
    id = "tabs",
    menuItem("Charts", icon = icon("bar-chart-o"),
             menuSubItem("Sub-item 1", tabName = "subitem1"),
             menuSubItem("Sub-item 2", tabName = "subitem2")),
    menuItem("Widgets", icon = icon("th"), tabName = "widgets", 
             menuSubItem("Sub-item 3", tabName = "subitem3"),
             menuSubItem("Sub-item 4", tabName = "subitem4"))
  )
)

body <- shinydashboard::dashboardBody(
  tags$style(HTML("
    /* 修复菜单项箭头旋转效果 */
    .sidebar-menu .treeview-menu.active + .treeview > a > .pull-right-container > .fa-angle-left {
      transform: rotate(90deg);
    }
    .sidebar-menu .treeview > a > .pull-right-container > .fa-angle-left {
      transition: transform 0.3s ease;
    }
  "))
)

shinyApp(
  ui = shinydashboardPlus::dashboardPage(header, sidebar, body),
  server = function(input, output) { }
)

方案二:使用shinydashboardPlus原生侧边栏组件

改用shinydashboardPlus::dashboardSidebarPlus替代shinydashboard::dashboardSidebar,它自带适配的箭头旋转逻辑:

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)

header <- shinydashboard::dashboardHeader()

sidebar <- shinydashboardPlus::dashboardSidebarPlus(
  sidebarMenu(
    id = "tabs",
    menuItem("Charts", icon = icon("bar-chart-o"),
             menuSubItem("Sub-item 1", tabName = "subitem1"),
             menuSubItem("Sub-item 2", tabName = "subitem2")),
    menuItem("Widgets", icon = icon("th"), tabName = "widgets", 
             menuSubItem("Sub-item 3", tabName = "subitem3"),
             menuSubItem("Sub-item 4", tabName = "subitem4"))
  )
)

body <- shinydashboard::dashboardBody()

shinyApp(
  ui = shinydashboardPlus::dashboardPage(header, sidebar, body),
  server = function(input, output) { }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:14:56