Skip to main content
InputLevel 1

Checkbox

复选框

WebMobileDesktopDifficulty: Easy

A small square the user can tick, for picking any number of several independent options at once.

01

Live Demo

Actually clickable
Notice the "Select all" box supports an indeterminate state (the dash). The whole row is clickable.

What you just saw:The square at the left of each row in a shopping cart, the check in front of "Allow notifications" in Settings, the circle in front of every item in a to-do list.

02

What it actually is

The semantics of a checkbox are "independent on/off": ticking it does not affect the one next to it. The difference from a radio button is not visual but logical — one allows multiple selections, the other allows exactly one.

checkboxmulti-select boxselection boxtick controlcheckbox group
03

Anatomy · What it's made of

  1. Box方框

    18–20px with a 1.5px border

  2. Check Mark对勾

    Appears when selected, optionally animated

  3. Label文字

    Left-aligned with the box on the same baseline

  4. Indeterminate半选态

    Shows a dash when only some children are checked

  5. Disabled禁用态

    Checked but no longer changeable

04

When to Use

When it fits, and when it doesn't
Checkbox usage recommendations
SituationUse it?
Any number of several options can be selectedYes
You need a "Select all" controlYes
An independent toggle (enabling a feature)Yes
The options are mutually exclusive and only one can be pickedNo
Ticking it triggers a dangerous action immediatelyDepends

A checkbox works for a mandatory declaration such as "I agree to the terms", but it is a poor stand-in for an explicit "Agree and continue" action.

On mobile, make the whole row tappable in a checklist — a 16px checkbox on its own is a very small target.

05

Similar Patterns

Don't mix these up
Full comparisonCheckbox vs Radio vs SwitchI need the user to make a selection. Which control?See the table
06

How to tell AI

Three levels of prompt

Add the component name and specifics

Add a checkbox list with a Select all control: the "Select all" row at the top supports an indeterminate state, every row is tappable across its full width, and the selected count shows on the right.

07

Don't just say this to AI

Bad → Better

Don't say this to AI

Add a few options people can tick.

Say this instead

Add a Checkbox list: the whole row is tappable (label wraps the input), a "Select all" row with an indeterminate state, a live selected count at the top, and rows at least 44px tall for comfortable mobile tapping.

08

Share this card

Social-ready

Turn this pattern into a 3:4 or 1:1 knowledge card and export it as PNG right in the browser. No backend needed.