Loaders
Spinner
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Spinner Loader</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<div class="spinner"></div>
<script src="script.js"></script>
</body>
</html>
Loading indicator with dependency on received data
https://jsonplaceholder.typicode.com/ used for this example
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Simulated Progress Bar Loader</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<div class="progress-container">
<div class="progress-bar" id="progress-bar"></div>
</div>
<div class="progress-text" id="progress-text">0%</div>
<script src="script.js"></script>
</body>
</html>
Skeletons
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Skeleton Loader</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<div class="dashboard-skeleton">
<div class="skeleton skeleton-title"></div>
<div class="card-container">
<div class="skeleton-card"></div>
<div class="skeleton-card"></div>
<div class="skeleton-card"></div>
<div class="skeleton-card"></div>
</div>
<div class="content-section">
<div class="skeleton-chart"></div>
<div class="skeleton-invoice"></div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>