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

如何阻止bslib修改Shiny应用中DT表格的格式样式?

解决bslib下DT表格自定义样式失效的问题

bslib的默认CSS规则优先级高于DT的行内自定义样式,导致原本的样式被覆盖,以下是几种可行的解决方式:

方法1:给自定义样式添加!important强制覆盖

在formatStyle的样式值后追加!important,提升自定义样式的优先级:

library(shiny)
library(dplyr)
library(DT)
library(bslib)

ui <- bslib::page_sidebar(
    DT::DTOutput("tab1")
)

server <- function(input, output) {
    output$tab1 <- DT::renderDT({
        mtcars %>% 
            head() %>% 
            DT::datatable() %>% 
            DT::formatStyle(
                columns = "mpg", 
                target = "row", 
                color = DT::styleEqual(c(21), "white !important"),
                backgroundColor = DT::styleEqual(c(21), "#4d4d4d !important"),
            )
    })
}

shinyApp(ui = ui, server = server)

方法2:禁用bslib对DT的样式注入

创建bslib主题时指定disable = c("DT"),阻止bslib加载针对DT的额外样式:

library(shiny)
library(dplyr)
library(DT)
library(bslib)

ui <- bslib::page_sidebar(
    theme = bs_theme(disable = c("DT")),
    DT::DTOutput("tab1")
)

server <- function(input, output) {
    output$tab1 <- DT::renderDT({
        mtcars %>% 
            head() %>% 
            DT::datatable() %>% 
            DT::formatStyle(
                columns = "mpg", 
                target = "row", 
                color = DT::styleEqual(c(21), "white"),
                backgroundColor = DT::styleEqual(c(21), "#4d4d4d"),
            )
    })
}

shinyApp(ui = ui, server = server)

方法3:通过自定义CSS绑定类名

在UI中插入更具体的CSS规则,给目标行绑定自定义类名实现样式控制:

library(shiny)
library(dplyr)
library(DT)
library(bslib)

ui <- bslib::page_sidebar(
    tags$style(HTML("
        #tab1 table.dataTable tbody tr.highlight-row {
            color: white !important;
            background-color: #4d4d4d !important;
        }
    ")),
    DT::DTOutput("tab1")
)

server <- function(input, output) {
    output$tab1 <- DT::renderDT({
        mtcars %>% 
            head() %>% 
            DT::datatable() %>% 
            DT::formatStyle(
                columns = "mpg", 
                target = "row", 
                className = styleEqual(c(21), "highlight-row")
            )
    })
}

shinyApp(ui = ui, server = server)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:07:44