CSS media feature pointer

Tests whether the user has a pointing device (such as a mouse), and if so, how accurate the primary pointing device is. This one is about adapting UI for touch devices.

Syntax

The pointer feature is specified as a keyword value chosen from the list below.

none
The primary input mechanism does not include a pointing device.

coarse
The primary input mechanism includes a pointing device of limited accuracy, such as a finger on a touchscreen.
Touchscreens (phones, tablets) Fingers (big, imprecise taps)

fine
The primary input mechanism includes an accurate pointing device, such as a mouse.
Mouse Trackpad Stylus (usually)

Examples

This example creates a small checkbox for users with fine primary pointers and a large checkbox for users with coarse primary pointers.

input[type="checkbox"] {
  appearance: none;
  border: solid;
  margin: 0;
}

input[type="checkbox"]:checked {
  background: gray;
}

@media (pointer: fine) {
  input[type="checkbox"] {
    width: 15px;
    height: 15px;
    border-width: 1px;
    border-color: blue;
  }
}

@media (pointer: coarse) {
  input[type="checkbox"] {
    width: 30px;
    height: 30px;
    border-width: 2px;
    border-color: red;
  }
}
@media (hover: none) and (pointer: coarse) {
  /* very likely a phone */
}