컴팩트한 스타일, 크기 시각화, 다양한 컬러를 바로 써먹을 수 있게 정리한 체크박스 토글 데모
.ck-slide + .slide-크기 + 색상 클래스<input class="ck-slide slide-m" style="--sw-on:#e11d48; --sw-ring:rgba(225,29,72,.2)">
아래 스니펫만 가져가도 기본 토글은 바로 붙습니다.
/* ck-slide core */
.ck-slide { --sw-w:38px; --sw-h:22px; --sw-pad:2px; --sw-knob:16px; --sw-off-bg:#cfddee; --sw-on:#0d6efd; -webkit-appearance:none; appearance:none; width:var(--sw-w); height:var(--sw-h); border-radius:999px; background:var(--sw-off-bg); border:1px solid #bdc7d4; position:relative; cursor:pointer; transition:.2s; }
.ck-slide::before { content:''; position:absolute; top:var(--sw-pad); left:var(--sw-pad); width:var(--sw-knob); height:var(--sw-knob); background:#fff; border-radius:50%; transition:transform .2s; box-shadow:0 1px 2px rgba(0,0,0,0.2); }
.ck-slide:checked { background:var(--sw-on); border-color:var(--sw-on); }
.ck-slide:checked::before { transform:translateX(calc(var(--sw-w) - var(--sw-knob) - (var(--sw-pad)*2) - 2px)); }
/* 선택 확장 */
.ck-slide.slide-m { --sw-w:40px; --sw-h:24px; --sw-pad:2px; --sw-knob:18px; }
.ck-slide.pri { --sw-on:#0d6efd; }
<label class="ck-slide-wrap"> <input type="checkbox" class="ck-slide slide-m pri" checked> <span>옵션 레이블</span> </label> <label class="ck-slide-wrap"> <input type="checkbox" class="ck-slide slide-s danger"> <span>위험 동의</span> </label>
.ck-slide + .slide-m 조합이 가장 무난합니다..ck-slide-wrap 으로 감싸면 텍스트와 간격이 안정적입니다.checked, disabled 상태를 그대로 씁니다.:focus-visible 과 prefers-reduced-motion 도 반영했습니다.한 줄 사용 예: <link rel="stylesheet" href="ck-slide.min.css"> 또는 아래 CSS 블록 그대로 복사