HTML
<div class="sk-thread">
<div class="sk-thread-row">
<div class="sk-thread-dot"></div>
<div class="sk-thread-lines">
<div class="sk-thread-bar" style="width: 80px; height: 9px"></div>
<div class="sk-thread-bar" style="width: 140px"></div>
</div>
</div>
<div class="sk-thread-row">
<div class="sk-thread-dot"></div>
<div class="sk-thread-lines">
<div class="sk-thread-bar" style="width: 60px; height: 9px"></div>
<div class="sk-thread-bar" style="width: 130px"></div>
</div>
</div>
<div class="sk-thread-row">
<div class="sk-thread-dot"></div>
<div class="sk-thread-lines">
<div class="sk-thread-bar" style="width: 70px; height: 9px"></div>
<div class="sk-thread-bar" style="width: 110px"></div>
</div>
</div>
</div> CSS
.sk-thread {
width: 220px;
display: flex;
flex-direction: column;
gap: 14px;
}
.sk-thread-row {
display: flex;
gap: 10px;
align-items: flex-start;
}
.sk-thread-dot {
width: 26px;
height: 26px;
border-radius: 50%;
background: linear-gradient(90deg, #1f1f28 0%, #2a2a36 50%, #1f1f28 100%);
background-size: 200% 100%;
animation: skShimmer 1.4s linear infinite;
flex-shrink: 0;
}
.sk-thread-lines {
display: flex;
flex-direction: column;
gap: 5px;
flex: 1;
}
.sk-thread-bar {
height: 11px;
border-radius: 5px;
background: linear-gradient(90deg, #1f1f28 0%, #2a2a36 50%, #1f1f28 100%);
background-size: 200% 100%;
animation: skShimmer 1.4s linear infinite;
}
@keyframes skShimmer {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}
@media (prefers-reduced-motion: reduce) {
.sk-thread,
.sk-thread * {
animation: none !important;
}
}