JSFiddle - React, Tailwind, and code Playground

HTML

<img id="btn" src="http://via.placeholder.com/150x150">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.js"></script>
<script src="https://new.matt.cat/scipad-app/jquery.hammer.js"></script>
<div id="popup">
  <p>
    click here to close popup
  </p>
</div>

CSS

body {
  height: 10vh;
  width: 10vw;
}

#btn {
  position: absolute;
  top: 100px;
  left: 10px;
  -webkit-transition: 0.3s;
  transition: 0.3s;
  opacity: 1;
}

#popup {
  position: absolute;
  background-color: black;
  display: none;
  color: red;
  z-index: 1;
  padding: 0 1em;
  -webkit-transition: 0.3s;
  transition: 0.3s;
  opacity: 0;
}

JavaScript

function fadeIn(elem) {
    elem.css("display", "block");
    elem.css("opacity", 1);
  }

  function fadeOut(elem) {
    elem.css("opacity", 0);
    setTimeout(function() {
      elem.css("display", "none");
    }, 300);
  }

  $("body").on("click", function(ev) {
    if (ev.target != $("#btn")[0] && $("#popup").is(":visible")) {
      fadeIn($("#btn"));
      fadeOut($("#popup"));
    }
  });

  $("#btn").on("click", function(ev) {
    fadeIn($("#popup"));
    fadeOut($("#btn"));
  });