JSFiddle - React, Tailwind, and code Playground
HTML
<div id="spinner" class="spinner"></div>
<div id="content">
<p>
here is the loaded content
</p>
<button onClick="foo()">load content again</button>
</div>
CSS
.spinner::after {
content: ' ';
display: block;
width: 64px;
height: 64px;
margin: 8px;
border-radius: 50%;
border: 8px solid;
border-color: #f00 transparent;
animation: rotate-spinner 1.2s linear infinite;
}
@keyframes rotate-spinner {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
JavaScript
function foo() {
document.getElementById('content').style.display = 'none';
document.getElementById('spinner').style.display = 'block';
setTimeout(() => {
document.getElementById('spinner').style.display = 'none';
document.getElementById('content').style.display = 'block';
}, 2000);
}
foo();