About this set
Layouts for longer lists of checkboxes. A bordered list stacks options as full-width rows divided by hairlines, with a hover tint, for filter and settings panels. A task list uses the same rows but strikes through and greys out each item once it is checked, for checklists and to-do lists. A two-column filter panel splits six options into columns with CSS columns, so the order reads down the first column before the second. All the checkboxes use a green checked colour. Every row is a label around a real checkbox hidden without display none, with a sibling span drawing the box, so the whole row is clickable. The strike-through is a sibling selector on the checked input, with no script. The Bootstrap version uses .list-group with .list-group-item-action rows and .form-check-input, the pattern from Bootstrap’s own list-group docs, plus a small columns rule for the filters. The Tailwind version uses divide-y, columns-2 and peer-checked:line-through.
What’s included
- Bordered list with full-width clickable rows
- Task list with strike-through on completed items
- Two-column filter panel using CSS columns
- Green checked colour, drawn tick
- No JavaScript
Accessibility
Each row is a label with its visible text as the accessible name, and each list is labelled with role="group" and aria-label. Tab and Space work as for any checkbox, keyboard focus draws a 2px green outline around the box, and completed tasks keep text at 4.5:1 contrast after they are struck through. Tick and colour transitions are disabled under prefers-reduced-motion.
Customise it
Plain CSS: change #16a34a in the .chk input:checked+.bx rule and the padding on .chk-list .chk. Bootstrap: set --choice-accent and the --bs-list-group-* variables on .choice-list. Tailwind: swap green-600 in the peer-checked: classes and px-[17px] py-[13px] on the rows.






