پیش‌نمایش زنده
کد HTML
<div class="onoff-btn">
  <input type="checkbox" class="onoff-btn-checkbox" />
  <svg
    class="onoff-btn-icon"
    stroke-width="3"
    viewBox="0 0 24 24"
    xmlns="http://www.w3.org/2000/svg"
  >
    <path
      d="M5.636 5.636a9 9 0 1 0 12.728 0M12 3v9"
      stroke-linejoin="round"
      stroke-linecap="round"
    ></path>
  </svg>
</div>
کد CSS
.onoff-btn {
  --hue: 0; /* Adjust color here */
  --saturation: 70%;
  --height: 60px;
  --icon-size: 36px;
  --transition-speed: 100ms;

  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;

  height: var(--height);
  min-width: var(--height);

  padding: 0rem 0rem;
  margin: 36px 16px;

  font-family: inherit;
  font-weight: 800;
  font-size: 1.2em;

  outline: none;
  border: none;
  border-radius: 100ch;
  background-color: hsl(var(--hue), var(--saturation), 40%);
  color: hsl(var(--hue), var(--saturation), 88%);

  box-shadow:
    2px 2px 2px 0 hsl(var(--hue), var(--saturation), 20%),
    0 0 1px -1px hsl(var(--hue), var(--saturation), 0%),
    1px 1px 2px 15px hsl(var(--hue), var(--saturation), 40%),
    0 0 0 16px hsl(var(--hue), var(--saturation), 60%),
    -3px -3px 2px 15px hsl(var(--hue), var(--saturation), 75%),
    3px 3px 4px 16px hsl(var(--hue), var(--saturation), 15%),
    0 0 0 20px hsl(var(--hue), var(--saturation), 25%),
    6px 6px 18px 8px hsl(var(--hue), var(--saturation), 20%),
    2px 2px 6px 0 hsl(var(--hue), var(--saturation), 60%) inset,
    -2px -2px 6px 0px hsl(var(--hue), var(--saturation), 20%) inset;

  cursor: pointer;

  transition: box-shadow var(--transition-speed) ease-in-out;
}

.onoff-btn-icon {
  stroke: hsl(var(--hue), var(--saturation), 88%);
  fill: none;
  width: var(--icon-size);
}

.onoff-btn-text,
.onoff-btn-icon {
  transform-origin: center;
  transition: transform var(--transition-speed) ease-in-out;
}

.onoff-btn:hover,
.onoff-btn:focus-visible {
  box-shadow:
    2px 2px 2px 0 hsl(var(--hue), var(--saturation), 20%),
    0 0 6px -1px hsl(var(--hue), var(--saturation), 10%),
    1px 1px 2px 15px hsl(var(--hue), var(--saturation), 40%),
    0 0 0 16px hsl(var(--hue), var(--saturation), 60%),
    -3px -3px 2px 15px hsl(var(--hue), var(--saturation), 75%),
    3px 3px 4px 16px hsl(var(--hue), var(--saturation), 15%),
    0 0 0 20px hsl(var(--hue), var(--saturation), 25%),
    6px 6px 18px 8px hsl(var(--hue), var(--saturation), 20%),
    2px 2px 6px 0 hsl(var(--hue), var(--saturation), 80%) inset,
    -2px -2px 6px 0px hsl(var(--hue), var(--saturation), 35%) inset;

  .onoff-btn-text,
  .onoff-btn-icon {
    transform: scale(1.1);
  }
}

.onoff-btn:active {
  box-shadow:
    2px 2px 2px 0 hsl(var(--hue), var(--saturation), 60%),
    0 0 6px -1px hsl(var(--hue), var(--saturation), 10%),
    1px 1px 2px 15px hsl(var(--hue), var(--saturation), 40%),
    0 0 0 16px hsl(var(--hue), var(--saturation), 60%),
    -3px -3px 2px 15px hsl(var(--hue), var(--saturation), 75%),
    3px 3px 4px 16px hsl(var(--hue), var(--saturation), 15%),
    0 0 0 20px hsl(var(--hue), var(--saturation), 25%),
    6px 6px 18px 8px hsl(var(--hue), var(--saturation), 20%),
    6px 6px 8px 0 hsl(var(--hue), var(--saturation), 20%) inset,
    -6px -6px 8px 0px hsl(var(--hue), var(--saturation), 25%) inset;

  .onoff-btn-text,
  .onoff-btn-icon {
    transform: scale(0.85);
  }
}

.onoff-btn-checkbox {
  position: absolute;
  z-index: 1;
  opacity: 0;
  width: 100%;
  height: 100%;
  cursor: pointer;
}

.onoff-btn:has(.onoff-btn-checkbox:checked) {
  --hue: 135;

  &:active {
    box-shadow:
      2px 2px 2px 0 hsl(var(--hue), var(--saturation), 60%),
      0 0 6px -1px hsl(var(--hue), var(--saturation), 10%),
      1px 1px 2px 15px hsl(var(--hue), var(--saturation), 40%),
      0 0 0 16px hsl(var(--hue), var(--saturation), 60%),
      -3px -3px 2px 15px hsl(var(--hue), var(--saturation), 75%),
      3px 3px 4px 16px hsl(var(--hue), var(--saturation), 15%),
      0 0 0 20px hsl(var(--hue), var(--saturation), 25%),
      6px 6px 18px 8px hsl(var(--hue), var(--saturation), 20%),
      6px 6px 8px 0 hsl(var(--hue), var(--saturation), 20%) inset,
      -6px -6px 8px 0px hsl(var(--hue), var(--saturation), 25%) inset;

    .onoff-btn-text,
    .onoff-btn-icon {
      transform: scale(0.85);
    }
  }

  box-shadow:
    2px 2px 2px 0 hsl(var(--hue), var(--saturation), 60%),
    0 0 6px -1px hsl(var(--hue), var(--saturation), 10%),
    1px 1px 2px 15px hsl(var(--hue), var(--saturation), 40%),
    0 0 0 16px hsl(var(--hue), var(--saturation), 60%),
    -3px -3px 2px 15px hsl(var(--hue), var(--saturation), 75%),
    3px 3px 4px 16px hsl(var(--hue), var(--saturation), 15%),
    0 0 0 20px hsl(var(--hue), var(--saturation), 25%),
    6px 6px 18px 8px hsl(var(--hue), var(--saturation), 20%),
    2px 2px 6px 0 hsl(var(--hue), var(--saturation), 20%) inset,
    -2px -2px 6px 0px hsl(var(--hue), var(--saturation), 25%) inset;

  .onoff-btn-text,
  .onoff-btn-icon {
    transform: scale(0.95);
  }
}

.onoff-btn:has(.onoff-btn-checkbox:focus-visible) {
  --saturation: 95%;
}

.onoff-btn.onoff-btn:has(.onoff-btn-checkbox:disabled) {
  --saturation: 0%;

  cursor: not-allowed;
  box-shadow:
    2px 2px 2px 0 hsl(var(--hue), var(--saturation), 20%),
    0 0 1px -1px hsl(var(--hue), var(--saturation), 0%),
    1px 1px 2px 15px hsl(var(--hue), var(--saturation), 40%),
    0 0 0 16px hsl(var(--hue), var(--saturation), 60%),
    -3px -3px 2px 15px hsl(var(--hue), var(--saturation), 75%),
    3px 3px 4px 16px hsl(var(--hue), var(--saturation), 15%),
    0 0 0 20px hsl(var(--hue), var(--saturation), 25%),
    6px 6px 18px 8px hsl(var(--hue), var(--saturation), 20%),
    2px 2px 6px 0 hsl(var(--hue), var(--saturation), 60%) inset,
    -2px -2px 6px 0px hsl(var(--hue), var(--saturation), 20%) inset;

  .onoff-btn-text,
  .onoff-btn-icon {
    transform: scale(1);
  }
}
نوع: button
تاریخ ایجاد: 2026/06/05
آخرین بروزرسانی: 2026/06/05