پیش‌نمایش زنده
کد HTML
<label class="finance-toggle">
  <input type="checkbox" class="finance-toggle__input" />
  <div class="finance-toggle__track">
    <span class="finance-toggle__label finance-toggle__label--off">OFF</span>
    <span class="finance-toggle__label finance-toggle__label--on">ON</span>
  </div>
  <span class="finance-toggle__thumb"></span>
</label>
کد CSS
.finance-toggle {
  /* sizing tokens */
  --w: 100px;
  --h: 50px;
  --gap: 4px;
  --thumb: calc(var(--h) - var(--gap) * 2);

  /* colour tokens */
  --track-off: #343434;
  --track-gradient-1: #8a5cff;
  --track-gradient-2: #0078ff;
  --track-gradient-3: #00eaff;
  --thumb-bg: #ffffff;
  --label-col: #d0d0d0;

  position: relative;
  display: inline-block;
  width: var(--w);
  height: var(--h);
  border-radius: calc(var(--h) / 2);
  cursor: pointer;
  user-select: none;
}

/* invisible but accessible checkbox */
.finance-toggle__input {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  width: 100%;
  height: 100%;
}

/* track */
.finance-toggle__track {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: var(--track-off);
  overflow: hidden;
  box-shadow: inset 0 3px 6px rgba(0, 0, 0, 0.35);
}

.finance-toggle__track::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    130deg,
    var(--track-gradient-1),
    var(--track-gradient-2),
    var(--track-gradient-3)
  );
  background-size: 250% 250%;
  opacity: 0;
  transition: opacity 0.35s ease;
}

/* labels */
.finance-toggle__label {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 1px;
  color: var(--label-col);
  text-shadow: 0 1px 0 #000;
  pointer-events: none;
  transition: opacity 0.25s ease;
}
.finance-toggle__label--off {
  left: 14px;
  opacity: 1;
}
.finance-toggle__label--on {
  right: 14px;
  opacity: 0;
}

/* thumb */
.finance-toggle__thumb {
  position: absolute;
  top: var(--gap);
  left: var(--gap);
  width: var(--thumb);
  height: var(--thumb);
  border-radius: 50%;
  background: var(--thumb-bg);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.45);
  transition: left 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
.finance-toggle__thumb::after {
  content: "";
  position: absolute;
  inset: 4px;
  border-radius: 50%;
  background: #f5f5f5;
  box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.15);
}

/* animation */
@keyframes gradientMove {
  0% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0% 50%;
  }
}

/* checked state */
.finance-toggle__input:checked + .finance-toggle__track::after {
  opacity: 1;
  animation: gradientMove 6s ease infinite;
}

.finance-toggle__input:checked ~ .finance-toggle__thumb {
  left: calc(100% - var(--thumb) - var(--gap));
}

.finance-toggle__input:checked
  + .finance-toggle__track
  .finance-toggle__label--on {
  opacity: 1;
}
.finance-toggle__input:checked
  + .finance-toggle__track
  .finance-toggle__label--off {
  opacity: 0;
}

/* focus ring (keyboard) */
.finance-toggle__input:focus-visible + .finance-toggle__track {
  outline: 3px solid var(--track-gradient-3);
  outline-offset: 3px;
}
نوع: button
تاریخ ایجاد: 2026/06/05
آخرین بروزرسانی: 2026/06/05