shinyhoverzoomingmouseovershinyapps

Creating a mouseover zoom or hover zoom in RShiny


I am building an app with RShiny that renders a pdf as a PNG image which is then shown via a call to imageOutput (If needed, the image can be rendered via a different output, such as plotOutput).

I would like the user to be able to mouse-over or hover over the image to show a larger, more zoomed in version or subset of that same image (Example below).

Is there a way to accomplish this in Shiny?

Thank you

zoom_mouseover


Solution

  • Here is an attempt based on w3schools:

    library(shiny)
    
    ui <- fluidPage(
        uiOutput('image'),
        tags$style('div#image:hover {
                     transform: scale(1.5);
                     transform-origin: top left;
                    }')
    )
    
    server <- function(input, output, session) {
      output$image <- renderUI({
          tags$img(src = 'https://i.sstatic.net/dlaci.jpg', width = 400)
      })
    }
    
    shinyApp(ui, server)
    

    Please play around with transform and transform-origin to suit your needs.