پیشنمایش زنده
کد HTML
<div class="loader-display-zone">
<div class="loader-grid-container">
<div class="loader-grid-layer loader-grid-layer-one">
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
</div>
<div class="loader-grid-layer loader-grid-layer-two">
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
</div>
<div class="loader-grid-layer loader-grid-layer-three">
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
<div class="loader-grid-cell"></div>
</div>
</div>
</div>
کد CSS
.loader-display-zone {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
max-width: 280px;
max-height: 280px;
overflow: hidden;
}
.loader-grid-container {
position: relative;
width: 150px;
height: 150px;
transform-style: preserve-3d;
perspective: 800px;
}
.loader-grid-layer {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 1fr);
gap: 8px;
opacity: 0;
animation: loader-grid-expand 4s infinite ease-out;
}
.loader-grid-cell {
background-color: #fcd34d; /* Amber-300 */
border-radius: 4px;
box-shadow: 0 0 5px rgba(252, 211, 77, 0.5);
}
.loader-grid-layer-one {
animation-delay: 0s;
transform: rotateX(60deg) rotateZ(0deg);
}
.loader-grid-layer-two {
animation-delay: 1s;
transform: rotateX(60deg) rotateZ(90deg);
opacity: 0.2;
}
.loader-grid-layer-three {
animation-delay: 2s;
transform: rotateX(60deg) rotateZ(180deg);
opacity: 0.1;
}
.loader-central-indicator {
position: absolute;
width: 30px;
height: 30px;
background-color: #f97316; /* Orange-500 */
border-radius: 50%;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 10;
animation: loader-indicator-pulse 2s infinite ease-in-out;
box-shadow: 0 0 15px rgba(249, 115, 22, 0.8);
}
@keyframes loader-grid-expand {
0% {
transform: rotateX(60deg) scale(0.5);
opacity: 0;
}
20% {
opacity: 1;
}
80% {
transform: rotateX(60deg) scale(1.5);
opacity: 0;
}
100% {
transform: rotateX(60deg) scale(0.5);
opacity: 0;
}
}
@keyframes loader-indicator-pulse {
0%,
100% {
transform: translate(-50%, -50%) scale(1);
opacity: 1;
}
50% {
transform: translate(-50%, -50%) scale(1.2);
opacity: 0.8;
}
}