Cursor styles
cursor changes the pointer appearance over an element. It helps communicate affordance, state, and expected interaction when used consistently.
Overview
cursor changes the pointer appearance over an element. It helps communicate affordance, state, and expected interaction when used consistently.
Browser support
| Feature | Desktop | Mobile | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 1 | 12 | 1 | 1.2 | 18 | 13.4 | |
alias | 1 | 12 | 1.5 | 3 | 18 | |
all-scroll | 1 | 12 | 1.5 | 3 | 18 | |
auto | 1 | 12 | 1 | 1.2 | 18 | 13.4 |
cell | 1 | 12 | 1.5 | 3 | 18 | 13.4 |
col-resize | 1 | 12 | 1.5 | 3 | 18 | |
context-menu | 1 | 12 | 1.5 | 3 | 18 | |
copy | 1 | 12 | 1.5 | 3 | 18 | |
crosshair | 1 | 12 | 1 | 1.2 | 18 | |
default | 1 | 12 | 1 | 1.2 | 18 | |
e-resize | 1 | 12 | 1 | 1.2 | 18 | |
ew-resize | 1 | 12 | 1.5 | 3 | 18 | |
grab Grab cursors (`grab` and `grabbing`) | 68 | 14 | 27 | 11 | 68 | |
grabbing | 68 | 79 | 27 | 11 | 68 | |
help | 1 | 12 | 1 | 1.2 | 18 | |
move | 1 | 12 | 1 | 1.2 | 18 | |
n-resize | 1 | 12 | 1 | 1.2 | 18 | |
ne-resize | 1 | 12 | 1 | 1.2 | 18 | |
nesw-resize | 1 | 12 | 1.5 | 3 | 18 | |
no-drop | 1 | 12 | 1.5 | 3 | 18 | |
none | 5 | 12 | 3 | 5 | 18 | |
not-allowed | 1 | 12 | 1.5 | 3 | 18 | |
ns-resize | 1 | 12 | 1.5 | 3 | 18 | |
nw-resize | 1 | 12 | 1 | 1.2 | 18 | |
nwse-resize | 1 | 12 | 1.5 | 3 | 18 | |
pointer | 1 | 12 | 1 | 1.2 | 18 | |
progress | 1 | 12 | 1 | 1.2 | 18 | |
row-resize | 1 | 12 | 1.5 | 3 | 18 | |
s-resize | 1 | 12 | 1 | 1.2 | 18 | |
se-resize | 1 | 12 | 1 | 1.2 | 18 | |
sw-resize | 1 | 12 | 1 | 1.2 | 18 | |
text | 1 | 12 | 1 | 1.2 | 18 | 13.4 |
url `url()` | 1 | 12 | 1.5 | 3 | 18 | 13.4 |
url positioning syntax `url()` positioning syntax | 1 | 79 | 1.5 | 3 | 18 | |
vertical-text | 1 | 12 | 1.5 | 3 | 18 | |
w-resize | 1 | 12 | 1 | 1.2 | 18 | |
wait | 1 | 12 | 1 | 1.2 | 18 | |
zoom-in | 37 | 12 | 24 | 9 | 37 | |
zoom-out | 37 | 12 | 24 | 9 | 37 | |
| Other | ||||||
| The cursor attribute specifies the mouse cursor displayed when the mouse pointer is over an element. | 1 | 12 | 1 | 1.2 | 18 | 1 |
1+Supported (version) Not supported ※Has note Sub-feature descriptions sourced from MDN Web Docs (CC BY-SA 2.5)
Notes 1 item(s)
Implementation note
- Starting in Firefox 67, the maximum size allowed for custom cursors is 32x32 pixels due to cursors being misused by certain malicious sites.
Notes 2 item(s)
Implementation note
- This property is only supported on iPads with an external pointing device.
- Unsupported values use the `default` pointer as a fallback.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- This cursor is only supported on macOS and Linux.
Notes 1 item(s)
Implementation note
- This cursor is only supported on macOS and Linux.
Notes 1 item(s)
Implementation note
- This cursor is only supported on macOS and Linux.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 3 item(s)
Compatibility
- Chrome also continues to support the prefixed versions.
- Available with a vendor prefix: -webkit- (1)
Implementation note
- Chrome 22 added Windows support.
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -moz- (1.5)
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (4)
Notes 3 item(s)
Compatibility
- Chrome Android also continues to support the prefixed versions.
- Available with a vendor prefix: -webkit- (18)
Implementation note
- Chrome Android 25 added Windows support.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 2 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (1)
Implementation note
- Chrome 22 added Windows support.
Notes 2 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (79)
Implementation note
- Edge 79 added Windows support.
Notes 2 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (18)
Implementation note
- Chrome Android 25 added Windows support.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- Firefox 4 added macOS support.
Notes 1 item(s)
Implementation note
- Firefox 4 added macOS support.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (1)
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -moz- (1)
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (3)
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (18)
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (1)
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -moz- (1)
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (3)
Notes 1 item(s)
Compatibility
- Available with a vendor prefix: -webkit- (18)
Notes 1 item(s)
Implementation note
- If this value is used, the iPad will display the `default` pointer instead.
Notes 1 item(s)
Implementation note
- Starting in Firefox 67, the maximum size allowed for custom cursors is 32x32 pixels due to cursors being misused by certain malicious sites.
Syntax
CSS
.clickable { cursor: pointer; }
.draggable { cursor: grab; }
.dragging { cursor: grabbing; }
.disabled { cursor: not-allowed; } Live demo
Use cases
Affordance hints
Reinforce clickable, draggable, or zoomable behavior with the expected pointer style.
Unavailable actions
Support disabled or blocked states with a pointer cue that matches the visual styling.
Cautions
- Cursor styling alone does not create semantics or behavior, so it should not replace real interactive elements.
- Exotic custom cursors can harm clarity and feel gimmicky if overused.
Accessibility
- Some users never see pointer changes, so interaction cues must also be visible in text, shape, and state styling.
Related links
Powered by web-features