پیش‌نمایش زنده
کد HTML
<button class="button">
  <span class="text">ST&nbsp;&nbsp;&nbsp;&nbsp; RT</span>
  <div class="katana-container">
    <div class="katana katana-1">
      <div class="handle"></div>
      <div class="guard"></div>
      <div class="blade"></div>
    </div>
    <div class="katana katana-2">
      <div class="handle"></div>
      <div class="guard"></div>
      <div class="blade"></div>
    </div>
  </div>
</button>
کد CSS
.button {
  width: 100%;
  height: 100%;
  height: 500px;
  position: relative;
  background: none;
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
}
.text {
  opacity: 0;
  position: absolute;
  color: #e8e8e8;
  font-size: 4rem;
  z-index: 5;
  pointer-events: none;
  transition: opacity 0.5s ease;
  animation: fuse 2s infinite;
}
@keyframes fuse {
  20%,
  80% {
    opacity: 0.6;
  }
  40% {
    opacity: 0.2;
  }
  60% {
    opacity: 0;
  }
  70% {
    opacity: 0.4;
  }
  75% {
    opacity: 0;
  }
}

.button:hover .text,
.button:active .text {
  opacity: 1;
  animation-play-state: paused;
}

.katana-container {
  width: 100%;
  height: 100%;
  position: absolute;
  margin: 50px auto;
  background: none;
  transform: rotate(90deg);
  border-radius: 50%;
  cursor: pointer;
}

.katana {
  position: absolute;
  width: 400px;
  height: 30px;
  top: 50%;
  left: 50%;
  transform-origin: center;
  transition: transform 0.8s cubic-bezier(0.15, 1.15, 0.35, 1.15);
}

.blade {
  width: 75%;
  height: 6px;
  background: linear-gradient(
    90deg,
    #c0c0c0 0%,
    #e8e8e8 20%,
    #ffffff 50%,
    #e8e8e8 80%,
    #c0c0c0 100%
  );
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  border-radius: 0 50% 50% 0;
  box-shadow: 0 0 10px rgba(200, 200, 200, 0.5);
}

/* Curved blade effect */
.blade::before {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.2) 30%,
    rgba(255, 255, 255, 0.8) 50%,
    rgba(255, 255, 255, 0.2) 70%,
    transparent 100%
  );
  border-radius: 0 50% 50% 0;
  transform: translateY(-1px);
}

.handle {
  width: 25%;
  height: 28px;
  background: repeating-linear-gradient(
    45deg,
    transparent,
    transparent 4px,
    rgba(139, 69, 19, 0.5) 4px,
    rgba(139, 69, 19, 0.5) 8px
  );
  position: absolute;
  left: 0px;
  border-radius: 15px;
  box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4);
}

.guard {
  width: 40px;
  height: 40px;
  background: radial-gradient(
    circle at center,
    #2b2b2b 0%,
    #1a1a1a 60%,
    #000000 100%
  );
  position: absolute;
  left: 20%;
  top: 50%;
  transform: translateY(-50%);
  border-radius: 50%;
  box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
  z-index: 1;
}

.guard::after {
  content: "";
  position: absolute;
  width: 80%;
  height: 80%;
  top: 10%;
  left: 10%;
  border-radius: 50%;
  background: repeating-radial-gradient(
    circle at center,
    #2b2b2b 0%,
    #1a1a1a 20%,
    #000000 40%
  );
}

.katana-1 {
  transform: translate(-60%, -60%) rotate(150deg) translateX(-100%);
}

.katana-2 {
  transform: translate(-60%, -60%) rotate(-150deg) translateX(-100%);
}

.katana-container:hover .katana-1,
.katana-container:active .katana-1 {
  transform: translate(-60%, -60%) rotate(150deg) translateX(0);
  animation: katanaClash1 0.8s cubic-bezier(0.15, 1.15, 0.35, 1.15) forwards;
}

.katana-container:hover .katana-2,
.katana-container:active .katana-2 {
  transform: translate(-60%, -60%) rotate(-150deg) translateX(0);
  animation: katanaClash2 0.8s cubic-bezier(0.15, 1.15, 0.35, 1.15) forwards;
}

@keyframes katanaClash1 {
  0% {
    transform: translate(-60%, -60%) rotate(150deg) translateX(-100%);
  }
  40% {
    transform: translate(-60%, -60%) rotate(125deg) translateX(-20%);
  }
  70% {
    transform: translate(-60%, -60%) rotate(140deg) translateX(10%);
  }
  100% {
    transform: translate(-60%, -60%) rotate(150deg) translateX(0%);
  }
}

@keyframes katanaClash2 {
  0% {
    transform: translate(-60%, -60%) rotate(-150deg) translateX(100%);
  }
  40% {
    transform: translate(-60%, -60%) rotate(-125deg) translateX(20%);
  }
  70% {
    transform: translate(-60%, -60%) rotate(-140deg) translateX(-10%);
  }
  100% {
    transform: translate(-60%, -60%) rotate(-150deg) translateX(0%);
  }
}

.katana-container::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  background: transparent;
  transform: translate(-70%, -70%);
  pointer-events: none;
}

.katana-container:hover::after,
.katana-container:active::after {
  animation: clashSpark 0.8s cubic-bezier(0.15, 1.15, 0.35, 1.15);
}

@keyframes clashSpark {
  0%,
  100% {
    width: 0;
    height: 0;
    background: radial-gradient(
      circle,
      rgba(255, 255, 255, 0.9) 0%,
      transparent 70%
    );
  }
  40% {
    width: 100px;
    height: 100px;
    background: radial-gradient(
      circle,
      rgba(255, 255, 255, 0.9) 0%,
      transparent 70%
    );
  }
}
نوع: button
تاریخ ایجاد: 2026/06/05
آخرین بروزرسانی: 2026/06/05