R有光泽:如何停止sliderInput标签点击从导致滚动到页面顶部?

时间:2017-11-01 04:34:17

标签: r shiny

我注意到,只要您点击任何R Shiny sliderInput 控件的标签,该窗口就会滚动到页面顶部。 为了说明这一点,请将sliderInput进一步放在页面上(例如,在大块文本或图表之后,然后单击其标签。页面滚动到顶部。

如何抑制此行为?我有一堆滑动器供用户进行交互,更多的是在页面上..我不希望他们不得不向下滚动以便与下一个滑块进行交互。

要重现的最小 ui.R (基于hello有光泽的欢迎教程):

library(shiny)

shinyUI(fluidPage(

  # Application title
  titlePanel("Old Faithful Geyser Data"),

  # Sidebar with a slider input for number of bins
  sidebarLayout(
    sidebarPanel(
      p('nothing in sidebar')
    ),

    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot"),
      p('Lorem Ipsum....'), #giant text block to trigger vertical scrollbars in browser.
sliderInput("bins",
                  "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)
    )
  )
))

1 个答案:

答案 0 :(得分:0)

我之前从未意识到这一点!

看起来这种情况正在发生,因为实际的HTML输入元素位于页面的顶部,单击标签会将您带到输入的位置。您正在看到的实际滑块是使用javascript创建的输入的修改版本,但实际的HTML输入的ID为" bins"位于页面顶部。这有点技术性,但希望它有意义。

大多数其他闪亮输入不会将原始HTML输入标记推送到页面顶部,这不会发生。

在这种情况下,一个简单的解决方法是使用添加自己的标签并在输入中使用label = NULL。例如:

  tags$label("Number of bins:"),
  sliderInput("bins",
              label = NULL,
              min = 1,
              max = 50,
              value = 30)