JSFiddle - React, Tailwind, and code Playground
HTML
<div id="preloader" class="visible"></div>
CSS
#preloader {
position: fixed;
left: 0;
top: 0;
z-index: 999;
width: 100%;
height: 100%;
overflow: visible;
background: #fbfbfb url('//cdnjs.cloudflare.com/ajax/libs/file-uploader/3.7.0/processing.gif') no-repeat center center;
}
.visible {
visibility: visible;
opacity: 1;
transition: opacity 2s linear;
}
.hidden {
visibility: hidden;
opacity: 0;
transition: visibility 0s 2s, opacity 2s linear;
}
JavaScript
function loadData() {
return new Promise((resolve, reject) => {
setTimeout(resolve, 2000);
})
}
loadData()
.then(() => {
let preloaderEl = document.getElementById('preloader');
preloaderEl.classList.add('hidden');
preloaderEl.classList.remove('visible');
});