پیش‌نمایش زنده
کد HTML
<div class="cbx cbx--elastic">
  <input id="cbx-elastic" class="cbx__input" type="checkbox" />
  <label class="cbx__label" for="cbx-elastic">
    <span class="cbx__box" aria-hidden="true">
      <svg class="cbx__svg" viewBox="0 0 24 24" aria-hidden="true">
        <path class="cbx__path" d="M6 12l4 4 8-8"></path>
      </svg>
    </span>
    <span class="cbx__text">I agree</span>
  </label>
</div>
کد CSS
@property --p {
  syntax: "<number>";
  initial-value: 0;
  inherits: false;
}
@property --fill {
  syntax: "<number>";
  initial-value: 0;
  inherits: false;
}
@property --glow {
  syntax: "<number>";
  initial-value: 0;
  inherits: false;
}

.cbx {
  --saffron: #ff9933;
  --orange: #ff4500;
  --ink: #fff;
  --size: 42px;
  --bw: 2.5px;
  --radius: 12px;
  --stroke: 3px;
  display: inline-block;
}

.cbx__input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  border: 0;
  padding: 0;
  clip: rect(0 0 0 0);
  overflow: hidden;
}

.cbx__label {
  display: inline-grid;
  grid-auto-flow: column;
  align-items: center;
  gap: 0.85rem;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}

.cbx__text {
  font:
    700 1.2rem/1 system-ui,
    Segoe UI,
    Roboto,
    sans-serif;
  letter-spacing: 0.02em;
  padding: 10px 1px;
  background: linear-gradient(90deg, var(--saffron), var(--orange));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  opacity: 0.9;
  transition:
    opacity 0.25s ease,
    transform 0.2s ease;
}

.cbx__box {
  position: relative;
  width: var(--size);
  height: var(--size);
  border-radius: var(--radius);
  border: var(--bw) solid color-mix(in oklab, var(--saffron), transparent 55%);
  background: linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.06),
      rgba(0, 0, 0, 0.06)
    )
    padding-box;
  box-shadow:
    inset 0 1px 2px rgba(255, 255, 255, 0.1),
    inset 0 -1px 2px rgba(0, 0, 0, 0.25),
    0 0 calc(10px * var(--glow)) calc(2px * var(--glow))
      color-mix(in oklab, var(--saffron), transparent 78%);
  transition:
    border-color 0.25s ease,
    box-shadow 0.25s ease;
  overflow: hidden;
  --p: 0;
  --fill: 0;
  --glow: 0;
}

.cbx__box::before {
  content: "";
  position: absolute;
  inset: calc(var(--bw) * -1);
  padding: var(--bw);
  border-radius: inherit;
  background: conic-gradient(
    from -90deg,
    color-mix(in oklab, var(--saffron), white 12%) 0 calc(var(--p) * 1turn),
    transparent 0 1turn
  );
  mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0) border-box;
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0) border-box;
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0.28;
  pointer-events: none;
}

.cbx__box::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--orange), var(--saffron));
  transform-origin: left center;
  transform: scaleX(var(--fill));
  opacity: 0.18;
  pointer-events: none;
}

.cbx__svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.cbx__path {
  fill: none;
  stroke: #fff;
  stroke-width: var(--stroke);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 40;
  stroke-dashoffset: 40;
  transition:
    stroke-dashoffset 0.28s cubic-bezier(0.2, 0.8, 0.3, 1) 0.06s,
    filter 0.2s;
  filter: drop-shadow(
    0 0 0.2rem color-mix(in oklab, var(--saffron), white 20%)
  );
}

.cbx__input:focus-visible + .cbx__label .cbx__box {
  border-color: color-mix(in oklab, var(--saffron), white 16%);
  box-shadow:
    0 0 0 0.18rem color-mix(in oklab, var(--saffron), transparent 72%),
    0 0 0 0.38rem color-mix(in oklab, var(--orange), transparent 86%);
}

.cbx__input:checked + .cbx__label .cbx__box {
  --p: 1;
  --fill: 1;
  --glow: 1;
}
.cbx__input:checked + .cbx__label .cbx__path {
  stroke-dashoffset: 0;
}
.cbx__input:checked + .cbx__label .cbx__text {
  opacity: 1;
  transform: translateY(-1px);
}
نوع: checkbox
تاریخ ایجاد: 2026/06/05
آخرین بروزرسانی: 2026/06/05