我用CSS來設計我的應用程序。我發現我需要反復地用actionButtons做更多的工作,因為不管我愿不愿意,它們都有默認的CSS類??匆幌逻@個例子:
library(shiny)
ui <- fluidPage(
tags$head(
tags$style(HTML("
.redbutton {
background-color: red;
}
"))
),
actionButton("button1", "Hover", class = "redbutton")
)
server <- function(input, output, session) {
}
shinyApp(ui, server)
該按鈕應用了我指定的redbutton類。然而,默認的CSS類包括懸停和點擊行為,當鼠標懸停時改變按鈕的顏色,即使我不希望這種行為。 這能避免嗎?我不想在我的css表中為每個類添加特定的實例:hover,只是為了禁用默認行為。
另一種方法是用javascript刪除不需要的CSS類,客戶端。 通過將它添加到您的tags$head函數中,將它包含在您的HTML標題中:
## other server code ...
tags$head(
## other header elements,
tags$script("
var dropClass = 'btn-default';
$(document).ready(function() {
document.getElementsByClassName(dropClass)
.forEach(function(n){n.classList.remove(dropClass)});
})
")
)
在這種情況下,刪除“btn-default”類應該可以解決問題。
注意,CSS還提供了一個指針事件:none聲明來防止觸發懸停樣式(以及其他效果,如光標形狀)。
一種可能性是為基本按鈕做一個功能:
myButton <- function(id, label, class) {
tags$button(id = id, class = paste0("action-button ", class), label)
}
但是要知道,這樣一個基本的按鈕有一些瀏覽器定義的CSS樣式,那是相當難看的。因此,您應該為自定義按鈕定義一個基類。