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

如何解决shinyFeedback覆盖自定义CSS导致fileInput进度条颜色设置失效问题

解决方案

通过精准的CSS选择器区分文件上传组件的正常、警告两种状态,不需要使用!important强制样式,即可同时满足两种场景的样式需求。

将UI部分的自定义CSS替换为仅针对无警告状态的文件上传进度条的规则即可,完整可运行代码如下:

library(shiny)
library(shinyFeedback)

ui <- fluidPage(
  useShinyFeedback(),
  fileInput(
    inputId = "upload",
    label = "Upload file:",
    accept = ".csv"
  ),
  tags$style("
    /* 仅无警告状态的文件上传进度条显示为红色 */
    .form-group:not(.has-feedback-warning) .progress-bar {
      background-color: red;
    }
  "),
  verbatimTextOutput("text")
)

server <- function(input, output, session) {
  data_in <- reactive({
    req(input$upload)
    ext <- tools::file_ext(input$upload$name)
    if (ext == "csv") {
      hideFeedback("upload")
      read.delim(
        input$upload$datapath,
        sep = ";"
      )
    } else {
      showFeedbackWarning(
        inputId = "upload"
      )
    }
  })
  output$text <- renderPrint({
    class(data_in())
  })
}

shinyApp(ui, server)

实现原理

shinyFeedback触发警告时,会自动给fileInput外层的.form-group容器添加.has-feedback-warning类,上面的CSS规则仅匹配没有该警告类的容器下的进度条,因此警告状态下会自动沿用shinyFeedback默认的橙色进度条样式,不会被自定义规则覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:27:03