【问题标题】:Move previous next buttons in R's slickR carousel在 R 的 slickR 轮播中移动上一个下一个按钮
【发布时间】:2021-08-19 05:57:08
【问题描述】:

我可以成功移动 slickR 轮播的“下一步”按钮。但是,当我使用类似的方法移动“上一个”按钮时,它不起作用。动作和鼠标悬停不再起作用。为什么是这样?如何移动“上一个”按钮并保持完整功能?

documentation 指的是设置中称为appendArrows 的元素。但我不清楚如何使用它。

appendArrows character, Change where the navigation arrows are attached (Selector, htmlString, Array, Element, jQuery object), Default: $(element)

这里是功能齐全的移动按钮应该出现的位置:

library(shiny)
library(slickR)

# Test #########################################################################
chart_names_list <- c( "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+1", 
                                                "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+2",
                                                "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+3")
num_slides <- 2


ui <- fluidPage(
  tags$head(
    tags$style(HTML("
    .slick-next {
      right: 163px;
      top: 20px;
    }
    .slick-prev {
      left: 670px;
      top: 20px;
    }
    .slick-slide {
      margin-top: 30px;
    }
      
    ")
    )
  ),
  
  slickROutput("slick_output")
)

server <- function(input, output, session) {
  output$slick_output <- renderSlickR({
    slickR(obj = chart_names_list, height = 300, width = "100%") +
      settings(dots = TRUE)
  })
}

shinyApp(ui, server)

【问题讨论】:

    标签: css r shiny slickr


    【解决方案1】:

    appendArrows 参数用于告诉应该在哪个div 类中显示箭头。

    这显示了原理,但仍需要一些额外的css 才能获得您期望的结果:

    library(shiny)
    library(slickR)
    
    # Test #########################################################################
    chart_names_list <- c( "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+1", 
                           "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+2",
                           "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+3")
    num_slides <- 2
    
    
    ui <- fluidPage(
      tags$head(
        tags$style(HTML("
          .arrows {
          height: 30px;}"))
      ),
      fluidRow(
        column(6,),
        column(2,
      tags$div(class="arrows"
          )),column(4)),
      slickROutput("slick_output")
    )
    
    server <- function(input, output, session) {
      output$slick_output <- renderSlickR({
        slickR(obj = chart_names_list, height = 300, width = "100%") +
          settings(dots = TRUE, appendArrows = '.arrows')
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 太棒了。你能说明这在 Rmarkdown 中是如何工作的吗?没有 Shiny 方法?
    • 这在 RMarkdown 中似乎有点棘手,并且没有成功使用 css chunck 后跟 &lt;div class = "arrows"&gt;&lt;/div&gt; :它有效果,但我没有设法正确放置按钮。
    • 好的。最后一个问题。它在桌面上运行良好,但在 iphone 上查看图像被截断。即它没有响应。请参阅:iframe.whatbank.ca/tmp,它使用:height = 300, width = "100%" 我需要手动添加响应行为吗?原始的 JS 页面谈到了它,kenwheeler.github.io/slick 但我不知道如何将它翻译成 R。
    • 看起来真的很酷!我将无法帮助响应:在我的泳道之外;-)。我这边的一个问题:你能分享css来让按钮彼此靠近吗?
    • 同样在台式电脑上,此解决方案仅适用于某些窗口尺寸。
    【解决方案2】:

    采纳@Waldi 的宝贵建议并添加一些 css 会导致下面的完整答案。

    library("shiny")
    library("slickR")
    
    # Test #########################################################################
    chart_names_list <- c( "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+1", 
                           "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+2",
                           "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+3")
    num_slides <- 3
    
    
    ui <- fluidPage(
      tags$head(
        tags$style(HTML("
        .arrows {
          height: 30px;
        }
        .slick-prev {
          left: 230px;  # moves right
        }
        .slick-next {
          left: 250px;  # moves right
        }
        "))
      ),
      fluidRow(
        column(6,),
        column(2,
               tags$div(class="arrows"
               )),
        column(4)),
      
      slickROutput("slick_output")
    )
    
    server <- function(input, output, session) {
      output$slick_output <- renderSlickR({
        slickR(obj = chart_names_list, height = 300, width = "100%") +
          settings(dots = TRUE, appendArrows = '.arrows')
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 感谢分享css
    【解决方案3】:

    由于这是关于箭头按钮定位的原始问题,我想值得一提的是,@ixodid 意识到here,当浏览器窗口调整大小时@Waldi 的column-approach 不再工作。

    以下是解决此问题的方法:

    library("shiny")
    library("slickR")
    
    chart_names_list <- c( "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+1", 
                           "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+2",
                           "http://placehold.it/900x500/39CCCC/ffffff&text=Slide+3")
    num_slides <- 3
    
    ui <- fluidPage(
      tags$head(
        tags$style(HTML("
        .arrows {
          height: 20px;
        }
        .slick-prev {
          left: calc(100% - 60px);
        }
        .slick-next {
          left: calc(100% - 35px);
        }
        .slick-slide img {
        width: 100% !important;
        }
        "))
      ),
      fluidRow(
        column(12, tags$div(class="arrows"))
      ),
      slickROutput("slick_output")
    )
    
    server <- function(input, output, session) {
      output$slick_output <- renderSlickR({
        slickR(obj = chart_names_list, height = 300) +
          settings(dots = TRUE, appendArrows = '.arrows')
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 添加图片以澄清问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    相关资源
    最近更新 更多