R Shiny - 改变方向颜色滑块输入

R Shiny - Change direction color sliderInput

我想更改默认情况下 sliderInput 中颜色的方向。例如:

ui <- fluidPage(
  fluidRow(
    column(width = 6,
      sliderInput( inputId = "mySlider", 
                   label = "Some text",
                   min = 0, max = 50,
                   value = 10
      )
    )
  )
)

server <- function(input, output, session) {}
shinyApp(ui, server)

不是让蓝色从 0 填充到 10(初始值),而是从 10 填充到 50。

我看到 shinyWidgets 包中的 noUiSliderInput 允许改变方向,但它改变的不仅仅是颜色。

有没有简单的方法来做到这一点?

外观由 sliderInput 的 CSS 文件定义,我找到了自定义闪亮主题 here。然后我只是改变了背景和滑块的颜色。可惜我的CSS功力有限,无法重现灰色背景的3D效果,现在只是灰色。

library(shiny)
ui <- fluidPage(
  fluidRow(
    column(width = 6,
           tags$head(tags$style(HTML("
           .irs-bar {
    border-top: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    background: #ddd;
}
    .irs-bar-edge {
        border: 1px solid #ddd;
        background: #ddd;
    }
.irs-line {
    background: #428bca;
    border: 1px solid #428bca;
}"))),
           sliderInput( inputId = "mySlider", 
                        label = "Some text",
                        min = 0, max = 50,
                        value = 10
           )
    )
  )
)

server <- function(input, output, session) {}
shinyApp(ui, server)

感谢 starja 的回答,我终于找到了如何更改(一个或多个滑块)与 sliderInput 完全相同的外观。这是代码:

library(shiny)

css <- "
#reverseSlider .irs-bar {
    border-top: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    background: linear-gradient(to bottom, #DDD -50%, #FFF 150%);
}
#reverseSlider .irs-bar-edge {
    border: 1px solid #ddd;
    background: linear-gradient(to bottom, #DDD -50%, #FFF 150%);
    border-right: 0;
}
#reverseSlider .irs-line {
    background: #428bca;
    border: 1px solid #428bca;
}
"

ui <- fluidPage(
  fluidRow(
    column(width = 6,
           tags$style(type='text/css', css),
           div(id = "reverseSlider", 
               sliderInput( inputId = "mySlider1", 
                            label = "Some text",
                            min = 0, max = 50,
                            value = 10 )
           ),
           sliderInput( inputId = "mySlider2", 
                        label = "Some other text",
                        min = 0, max = 50,
                        value = 10 )
    )
  )
)

server <- function(input, output, session) {}
shinyApp(ui, server)