پیش‌نمایش زنده
کد HTML
<section class="loader">
  <aside class="triangle triangle-top">
    <div class="side front"></div>
    <div class="side behind"></div>
    <div class="side right"></div>
    <div class="side left"></div>
    <div class="side bottom"></div>
  </aside>
  <aside class="cube">
    <div class="side front"></div>
    <div class="side behind"></div>
    <div class="side right"></div>
    <div class="side left"></div>
    <div class="side top"></div>
    <div class="side bottom"></div>
  </aside>
  <aside class="triangle triangle-bottom">
    <div class="side front"></div>
    <div class="side behind"></div>
    <div class="side right"></div>
    <div class="side left"></div>
    <div class="side bottom"></div>
  </aside>
  <aside class="triangle triangle-left">
    <div class="side front"></div>
    <div class="side behind"></div>
    <div class="side right"></div>
    <div class="side left"></div>
    <div class="side bottom"></div>
  </aside>
  <aside class="triangle triangle-right">
    <div class="side front"></div>
    <div class="side behind"></div>
    <div class="side right"></div>
    <div class="side left"></div>
    <div class="side bottom"></div>
  </aside>
  <aside class="triangle triangle-frontend">
    <div class="side front"></div>
    <div class="side behind"></div>
    <div class="side right"></div>
    <div class="side left"></div>
    <div class="side bottom"></div>
  </aside>
  <aside class="triangle triangle-backend">
    <div class="side front"></div>
    <div class="side behind"></div>
    <div class="side right"></div>
    <div class="side left"></div>
    <div class="side bottom"></div>
  </aside>
</section>
کد CSS
.loader {
  --size: 120px;
  width: var(--size);
  height: var(--size);
  zoom: 0.6;
  position: relative;
  animation: girar 8s linear infinite alternate both;

  &,
  .cube,
  .side {
    transform-style: preserve-3d;
    perspective: 10000px;
  }

  .cube {
    width: 120px;
    height: 120px;
    position: absolute;

    .side {
      width: 100%;
      height: 100%;
      position: absolute;
      background-color: #000;
      overflow: hidden;
      top: 0;
      left: 0;

      &::before {
        content: "";
        display: block;
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        background-image: linear-gradient(45deg, #60efff, #00ff87, #e81cff);
        filter: blur(50px);
      }

      &.front {
        transform: none;
      }

      &.behind {
        transform: translateZ(-120px);
      }

      &.right {
        transform-origin: 100% 0%;
        transform: rotateY(-90deg);
      }

      &.left {
        transform-origin: 0% 0%;
        transform: rotateY(90deg);
      }

      &.top {
        transform-origin: 50% 0%;
        transform: rotateX(-90deg);
      }
      &.bottom {
        transform-origin: 50% 100%;
        transform: rotateX(90deg);
      }
    }
  }

  .triangle {
    width: 120px;
    height: 120px;
    position: absolute;
    bottom: 118px;
    transform-style: preserve-3d;
    perspective: 10000px;

    &.triangle-top {
      bottom: -118px;
      transform: scale3d(-1, -1, -1) translateZ(118px);
    }

    &.triangle-right {
      left: 118px;
      bottom: 0;
      transform: rotate(-90deg) scaleY(-1) scaleX(-1);
    }

    &.triangle-left {
      left: -118px;
      bottom: 0;
      transform: rotate(-90deg) scaleX(-1);
    }

    &.triangle-frontend {
      bottom: -1px;
      transform: rotate(90deg) rotateX(-90deg) translate(0px, -61px)
        translateZ(-116px);
      left: -175px;
    }

    &.triangle-backend {
      bottom: -36px;
      transform: rotate(90deg) rotateX(-90deg) scaleY(-1)
        translate(-36px, -178px) translateZ(253px);
      left: 194px;
    }

    .side {
      transform-style: preserve-3d;
      perspective: 10000px;
      width: 100%;
      height: 100%;
      clip-path: polygon(50% 0, 100% 100%, 0 100%);
      position: absolute;

      &.front,
      &.behind {
        transform-origin: 50% 100%;
      }

      &.front {
        background-color: #fff8;
        transform: rotateX(30deg);
      }

      &.behind {
        background-color: #00f8;
        transform: translateZ(-120px) rotateX(-30deg);
      }

      &.right {
        transform-origin: 100% 100%;
        transform: rotateY(-90deg) rotateX(-30deg);
        background-color: #f0f8;
      }
      &.left {
        transform-origin: 0% 100%;
        transform: rotateY(90deg) rotateX(-30deg);
        background-color: #0f08;
      }
    }
  }
}

@keyframes girar {
  0% {
    transform: rotateX(0deg) rotateY(0deg);
  }
  100% {
    transform: rotateX(359deg) rotateY(359deg);
  }
}
نوع: loader
تاریخ ایجاد: 2026/06/06
آخرین بروزرسانی: 2026/06/06