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';
...