如何更改DT / Shiny中ColumnVisibility按钮的颜色

时间:2017-10-06 21:39:41

标签: r shiny shinydashboard dt

我正在使用闪亮仪表板中的DT包构建一个表。该表有几列,我使用DT的ColVis功能,允许用户隐藏/只显示他们感兴趣的列。

我的问题是 - 点击列可见性按钮后,是否可以更改这些按钮的颜色?截至目前,颜色不够均衡,很难分辨哪些列是可见的,哪些列不能导航到表中。我已经包含了一个截图,显示了我的意思。 The Site_ID column is not visible in the table, while the Participant_ID column is.

我在google chrome中使用了inspect元素来查找对象名称,它看起来像是:a.dt-buttons.buttons-columnVisibility,位于body.skin-blue,div.dt-button-collection。< / p>

使用此信息我将以下行添加到我的ui.R代码中:

标记$ head(标记$ style(HTML(&#34; .skin-blue .dt-button-collection .buttons-columnVisibility .active a {background-color:#4d4d4d}&#34;)))< / p>

但这似乎没有做任何事情。任何有关在我的仪表板中实现此自定义CSS / HTML的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

基于this answer,看起来需要使用background设置按钮颜色。我还使用!important来覆盖DT按钮样式,尽管这是may not be the best practice

这是一个小例子:

library(DT)
library(shiny)

ui <- basicPage(
    tags$head(
        tags$style(
        HTML(
            ".dt-button.buttons-columnVisibility {
              background: #FF0000 !important;
              color: white !important;
              opacity: 0.5;
           }
        .dt-button.buttons-columnVisibility.active {
              background: black !important;
              color: white !important;
              opacity: 1;
           }"
             )
        )
        ),
    h2("The iris data"),
    DT::dataTableOutput("mytable")
)

server <- function(input, output) {
    output$mytable = DT::renderDataTable({
        datatable(
            iris, rownames = FALSE,
            extensions = 'Buttons', 
            options = list(dom = 'Bfrtip', buttons = I('colvis'))
        )
    })
}

shinyApp(ui, server)