JSFiddle - React, Tailwind, and code Playground

by velo_ninja

HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    .expand-div {
      position: absolute;
      background-color: #ccc;
      transition: width 0.5s, height 0.5s;
    }

    .divMain {
      border: 1px solid black;
      padding: 10px;
      margin: 20px;
    }
  </style>
</head>
<body>





  <script>
    function yyy(trigger, div) {
      div.addEventListener(trigger, createClickHandler(trigger, div));
      var divExpand;

      function createClickHandler(trigger, target) {
        return function (event) {
          xxx(event, trigger, target);
        };
      }

      function xxx(event, trigger, target) {
        if (divExpand) {
          if (target === divExpand.triggerElement) {
            document.body.removeChild(divExpand);
            divExpand = null;
          } else {
            document.body.removeChild(divExpand);
            divExpand = null;
            open_divExpand(event, trigger, target);
          }
        } else {
          open_divExpand(event, trigger, target);
        }
      }

      function open_divExpand(event, trigger, target) {
        divExpand = document.createElement('div');
        divExpand.className = 'expand-div';
        var rect = target.getBoundingClientRect();
        var initialX = rect.left + rect.width / 2;
        var initialY = rect.top + rect.height / 2;
        divExpand.style.width = '0';
        divExpand.style.height = '0';
        divExpand.style.left = (initialX - divExpand.offsetWidth / 2) + 'px';
        divExpand.style.top = (initialY - divExpand.offsetHeight / 2) + 'px';
        document.body.appendChild(divExpand);
        divExpand.offsetWidth;
        divExpand.style.width = '200px';
        divExpand.style.height = '200px';
        divExpand.triggerElement = target;
      }
    }

    let divMain = document.createElement('div');
    divMain.id = 'divMain';
   ...