JSFiddle - React, Tailwind, and code Playground
HTML
<div class="container">
<div class="box red"></div>
<div class="box green"></div>
<div class="box blue"></div>
<div class="modal red"></div>
<div class="modal green"></div>
<div class="modal blue"></div>
</div>
CSS
.container {
width: 300px;
text-align: center;
position: relative;
}
.red{background:red;}
.green{background:green;}
.blue{background:blue;}
.modal {
position: absolute;
opacity: 0;
top: -200px;
}
.box {
width: 30px;
height: 30px;
display: inline-block;
margin-left: 10px;
}
.box:hover {
cursor:pointer;
opacity:0.8;
}
.modal {
width: 150px;
height: 150px;
}
.modal.red {
left: 0;
}
.modal.green {
left: calc(50% - 75px);
}
.modal.blue {
right: 0;
}
JavaScript
// red
function redBoxShow() {
$('.modal.red').animate({opacity: 1, top: '40'}, 400);
$(this).one("click", redBoxHide);
}
function redBoxHide() {
$('.modal.red').animate({opacity: 0, top: '-200px'}, 400);
$(this).one("click", redBoxShow);
}
// green
function greenBoxShow() {
$('.modal.green').animate({opacity: 1, top: '40'}, 400);
$(this).one("click", greenBoxHide);
}
function greenBoxHide() {
$('.modal.green').animate({opacity: 0, top: '-200px'}, 400);
$(this).one("click", greenBoxShow);
}
// blue
function blueBoxShow() {
$('.modal.blue').animate({opacity: 1, top: '40'}, 400);
$(this).one("click", blueBoxHide);
}
function blueBoxHide() {
$('.modal.blue').animate({opacity: 0, top: '-200px'}, 400);
$(this).one("click", blueBoxShow);
}
$(".box.red").one("click", redBoxShow);
$(".box.green").one("click", greenBoxShow);
$(".box.blue").one("click", blueBoxShow);