cari

Rumah  >  Soal Jawab  >  teks badan

Gunakan bslib untuk menyesuaikan CSS DT::datatable dalam aplikasi Shiny

Saya cuba menggunakan gaya CSS tersuai pada DT::datatable dalam apl berkilat. Apabila pengguna memilih baris dalam jadual, saya mahu baris yang dipilih mempunyai teks kuning, hitam dan bukannya teks biru, putih lalai. Saya tidak boleh melakukan ini dengan jayanya apabila saya juga menggunakan pakej bslib.

(Soalan serupa telah ditanya di sini, tetapi saya tidak dapat menjawabnya, seperti yang akan saya terangkan di bawah).

Tanpa bslib, saya berjaya menggunakan css seperti ini:

library(shiny)

ui <- fluidPage(
  tags$head(
    tags$style(
      HTML("table.dataTable tbody tr.selected td {
             color: black !important;
             box-shadow: inset 0 0 0 9999px yellow !important;}"
      )
    )
  ),
  DT::dataTableOutput("test_table")
)

server <- function(input, output, session) {

  output$test_table <- DT::renderDataTable({
    DT::datatable(iris, selection = 'single')
  })
}

shinyApp(ui, server = server)

CSS untuk kejayaan

Walau bagaimanapun, saya mendapati bahawa menggunakan tema bslib, saya tidak dapat menggunakan css menggunakan kaedah yang sama.

Saya telah melihat dua sumber ini menunjukkan penggunaan fungsi bslib::bs_add_rules untuk menyelesaikan masalah ini:

Berdasarkan ini, saya telah mencuba variasi berikut tetapi nampaknya tidak dapat membuatnya berfungsi:

library(shiny)

ui <- bslib::page_fluid(
  theme = bslib::bs_add_rules(
      bslib::bs_theme(),
      sass::as_sass("table.dataTable tbody tr.selected td {
             color: black !important;
             box-shadow: inset 0 0 0 9999px yellow !important;}"
      )),
  DT::dataTableOutput("test_table")
)

server <- function(input, output, session) {

  output$test_table <- DT::renderDataTable({
      DT::datatable(iris, selection = 'single')
  })
}

shinyApp(ui, server = server)

CSS yang tidak berjaya

P粉081360775P粉081360775240 hari yang lalu411

membalas semua(1)saya akan balas

  • P粉722409996

    P粉7224099962024-03-30 10:11:35

    Masalahnya ialah dengan tag objek. Jika anda menyemak kod HTML, anda akan melihat bahawa apabila anda menggunakan sass::as_sass ia sepatutnya .table.dataTable tbody tr.active td , bukan table. dataTable tbody tr.selected td

    library(shiny)
    
    ui <- bslib::page_fluid(
      theme = bslib::bs_add_rules(
        bslib::bs_theme(),
        sass::as_sass("table.dataTable tbody tr.active td {
                 color: black !important;
                 box-shadow: inset 0 0 0 9999px yellow !important;}"
        )),
      DT::dataTableOutput("test_table")
    )
    
    server <- function(input, output, session) {
      
      output$test_table <- DT::renderDataTable({
        DT::datatable(iris, selection = 'single')
      })
    }
    
    shinyApp(ui, server = server)

    balas
    0
  • Batalbalas