JSFiddle - React, Tailwind, and code Playground

by SullysRants

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.panzoom/3.2.3/jquery.panzoom.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>


<div class="container">
  <div class="row">
    <section id="auto-contain">

      <p class="text-center mb-2">
        <button type="button" class="btn btn-sm btn-secondary zoom-in">Zoom In</button>
        <button type="button" class="btn btn-sm btn-secondary zoom-out">Zoom Out</button>
        <button type="button" class="btn btn-sm btn-secondary reset">Reset</button>
      </p>

      <div class="panzoom-parent center-block">
        <img class="panzoom" src="https://testimages.org/img/testimages_screenshot.jpg" width="400" height="auto">
      </div>

      <p class="text-center mt-2">
        <button type="button" class="btn btn-sm btn-secondary zoom-in">Zoom In</button>
        <button type="button" class="btn btn-sm btn-secondary zoom-out">Zoom Out</button>
        <button type="button" class="btn btn-sm btn-secondary reset">Reset</button>
      </p>

    </section>
  </div>
</div>

JavaScript

(function() {
  var $section = $('#auto-contain');
  $section.find('.panzoom').panzoom({
    $zoomIn: $section.find(".zoom-in"),
    $zoomOut: $section.find(".zoom-out"),
    $zoomRange: $section.find(".zoom-range"),
    $reset: $section.find(".reset"),
    startTransform: 'scale(1.0)',
    increment: 0.2,
    minScale: 1,
    maxScale: 3,
    panOnlyWhenZoomed: true,
    contain: 'automatic'
  })
})();