پیش‌نمایش زنده
کد HTML
<div class="loader">
  <div class="action-space">
    <div class="speed-lines">
      <div class="line"></div>
      <div class="line"></div>
      <div class="line"></div>
      <div class="line"></div>
      <div class="line"></div>
      <div class="line"></div>
      <div class="line"></div>
      <div class="line"></div>
    </div>

    <div class="cube-panel">
      <div class="face f-f"><span class="content">Wait</span></div>
      <div class="face f-b"><span class="content">End?</span></div>
      <div class="face f-r"><span class="content">Load</span></div>
      <div class="face f-l"><span class="content">Ing</span></div>
      <div class="face f-t"><span class="content">Now</span></div>
      <div class="face f-bt"><span class="content">...</span></div>
    </div>
  </div>
</div>
کد CSS
.loader {
  --paper: #f0f0f0;
  --ink: #1a1a1a;
  --cyan: #00ffff;
  --magenta: #ff00ff;
  --yellow: #ffee00;
  --size: 120px;
  --half: 60px;
  --smooth-ease: cubic-bezier(0.8, 0, 0.2, 1);
  margin: 0;
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--paper);
  background-image: radial-gradient(var(--ink) 1px, transparent 1px);
  background-size: 24px 24px;
  overflow: hidden;
  perspective: 1500px;
}
.action-space {
  position: absolute;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  transform-style: preserve-3d;
  animation: worldShake 6s ease-in-out infinite;
}

@keyframes worldShake {
  0%,
  100% {
    transform: translate(0, 0) rotate(0deg);
  }
  25% {
    transform: translate(2px, -2px) rotate(0.5deg);
  }
  50% {
    transform: translate(-3px, 3px) rotate(-0.5deg);
  }
  75% {
    transform: translate(1px, 1px) rotate(0.2deg);
  }
}

.speed-lines {
  position: absolute;
  width: 600px;
  height: 600px;
  transform-style: preserve-3d;
  opacity: 0;
  animation: linesFlash 4s var(--smooth-ease) infinite;
}

@keyframes linesFlash {
  0%,
  40%,
  60%,
  100% {
    opacity: 0;
    transform: scale(0.8) rotate(0deg);
  }
  50% {
    opacity: 1;
    transform: scale(1.3) rotate(15deg);
  }
}

.line {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 2px;
  height: 300px;
  background: var(--ink);
  transform-origin: top center;
}

.line:nth-child(1) {
  transform: rotate(0deg) translateY(-300px);
}
.line:nth-child(2) {
  transform: rotate(45deg) translateY(-300px);
}
.line:nth-child(3) {
  transform: rotate(90deg) translateY(-300px);
}
.line:nth-child(4) {
  transform: rotate(135deg) translateY(-300px);
}
.line:nth-child(5) {
  transform: rotate(180deg) translateY(-300px);
}
.line:nth-child(6) {
  transform: rotate(225deg) translateY(-300px);
}
.line:nth-child(7) {
  transform: rotate(270deg) translateY(-300px);
}
.line:nth-child(8) {
  transform: rotate(315deg) translateY(-300px);
}

.cube-panel {
  position: relative;
  width: var(--size);
  height: var(--size);
  transform-style: preserve-3d;
  animation: panelLogic 4s var(--smooth-ease) infinite;
}

@keyframes panelLogic {
  0%,
  100% {
    transform: rotateX(-20deg) rotateY(45deg) scale3d(1, 1, 1);
  }
  25% {
    transform: rotateX(-15deg) rotateY(135deg) scale3d(0.85, 0.85, 0.85);
  }
  50% {
    transform: rotateX(160deg) rotateY(225deg) scale3d(1.4, 1.4, 1.4);
  }
  75% {
    transform: rotateX(155deg) rotateY(315deg) scale3d(0.85, 0.85, 0.85);
  }
}

.face {
  position: absolute;
  width: 100%;
  height: 100%;
  background: #fff;
  border: 6px solid var(--ink);
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  backface-visibility: visible;
  overflow: hidden;
  transition: border-color 0.4s var(--smooth-ease);
}

.face::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(var(--ink) 20%, transparent 20%);
  background-size: 6px 6px;
  opacity: 0.1;
}

.face::after {
  content: "";
  position: absolute;
  inset: -10px;
  border: 2px solid var(--cyan);
  box-shadow: 15px 15px 0 var(--magenta);
  opacity: 0.3;
  pointer-events: none;
  transition: transform 0.4s var(--smooth-ease);
}

.content {
  font-family: "Arial Black", sans-serif;
  font-size: 32px;
  color: var(--ink);
  text-transform: uppercase;
  transform: skew(-10deg);
  z-index: 2;
}

.f-f {
  transform: rotateY(0deg) translateZ(var(--half));
}
.f-b {
  transform: rotateY(180deg) translateZ(var(--half));
}
.f-r {
  transform: rotateY(90deg) translateZ(var(--half));
}
.f-l {
  transform: rotateY(-90deg) translateZ(var(--half));
}
.f-t {
  transform: rotateX(90deg) translateZ(var(--half));
}
.f-bt {
  transform: rotateX(-90deg) translateZ(var(--half));
}

.f-f {
  background: var(--yellow);
}
.f-r {
  background: var(--cyan);
}
.f-l {
  background: var(--magenta);
}

.onomatopoeia {
  position: absolute;
  color: #fff;
  background: var(--ink);
  padding: 5px 15px;
  font-family: "Arial Black", sans-serif;
  font-size: 18px;
  border: 3px solid #fff;
  box-shadow: 5px 5px 0 var(--ink);
  transform: rotate(-15deg);
  opacity: 0;
  animation: popText 4s var(--smooth-ease) infinite;
}

@keyframes popText {
  0%,
  42%,
  58%,
  100% {
    opacity: 0;
    transform: scale(0) rotate(-15deg) translate(0, 0);
  }
  50% {
    opacity: 1;
    transform: scale(1.2) rotate(10deg) translate(60px, -90px);
  }
}
نوع: loader
تاریخ ایجاد: 2026/06/06
آخرین بروزرسانی: 2026/06/06