JSFiddle - React, Tailwind, and code Playground

HTML

<p><a href="javascript:fadeIn()">Fade in</a> (you should click it only 2 seconds later after clicking "Fade out")</p>
<p><a href="javascript:fadeOut()">Fade out</a></p>
<div id="square" class="invisible no-display"></div>

CSS

#square {
    width: 500px;
    height: 500px;
    background-color: red;
    border: 1px solid black;
    opacity: 1;
    
    -webkit-transition: opacity 2s ease;
    -moz-transition: opacity 2s ease;
    -ms-transition: opacity 2s ease;
    -o-transition: opacity 2s ease;
    transition: opacity 2s ease;
}

#square.invisible {
    opacity: 0;
}

#square.no-display {
    display: none;
}

JavaScript

var square = document.getElementById("square");
function fadeIn() {
    square.classList.remove("no-display");
    square.classList.remove("invisible");
}

function fadeOut() { 
    square.classList.add("invisible");
    setTimeout(function() { square.classList.add("no-display"); }, 2000 );
}