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();