네이티브 <input type="checkbox">를 쓰면 키보드·폼 제출·스크린리더 지원을 공짜로 얻습니다. 부분 선택은 HTML 속성이 아니라 JS로 element.indeterminate = true를 설정해야 하는 유일한 상태입니다 — 상위 항목 체크박스가 자식 중 일부만 체크됐을 때 대시(-) 모양으로 보여줍니다.
라디오 버튼과의 차이는 개수 제약입니다. 체크박스는 0개부터 전부까지 자유롭게 고르고, 라디오 버튼은 같은 그룹에서 정확히 하나만 고를 수 있습니다. "둘 다 좋아요"가 가능하면 체크박스, "하나만 골라야 한다"면 라디오입니다.
레이블은 반드시 <label for="">로 체크박스와 연결해서 레이블 텍스트를 눌러도 토글되게 합니다.