pointer displays the familiar hand-with-pointing-finger icon, conventionally signaling a clickable element like a link or button; default shows the standard arrow cursor; not-allowed displays a cursor indicating an action is currently unavailable, commonly paired with a disabled-looking element; and many other specific keywords exist for more particular interactions, like text for editable text areas, move for draggable elements, and grab/grabbing for elements that can be dragged. Setting cursor: pointer on a non-interactive element that doesn't actually respond to a click is a common, subtly misleading UX mistake, since it visually signals clickability that doesn't actually exist.
1Understanding Cursor
pointer displays the familiar hand-with-pointing-finger icon, conventionally signaling a clickable element like a link or button; default shows the standard arrow cursor; not-allowed displays a cursor indicating an action is currently unavailable, commonly paired with a disabled-looking element; and many other specific keywords exist for more particular interactions, like text for editable text areas, move for draggable elements, and grab/grabbing for elements that can be dragged. Setting cursor: pointer on a non-interactive element that doesn't actually respond to a click is a common, subtly misleading UX mistake, since it visually signals clickability that doesn't actually exist.
Only set cursor: pointer on elements that genuinely respond to a click — applying it to a purely decorative or non-interactive element visually signals clickability that isn't actually there, misleading users about what they can interact with.
button, a, [role="button"] {
cursor: pointer;
}2Practical Example
Here is a real-world application of Cursor showing how it is used in production CSS code.
.disabled-button {
cursor: not-allowed;
opacity: 0.5;
}3Best Practices
Follow these guidelines when working with Cursor:
1. Reserve cursor: pointer specifically for elements that genuinely trigger some action on click, keeping the cursor an honest, reliable visual signal of actual interactivity
2. Use cursor: not-allowed on a visually disabled-looking element to reinforce, through the cursor itself, that the action currently isn't available
3. Use more specific cursor values, like grab, move, or text, when they more precisely match the specific kind of interaction actually available on a particular element
Tip: Only set cursor: pointer on elements that genuinely respond to a click — applying it to a purely decorative or non-interactive element visually signals clickability that isn't actually there, misleading users about what they can interact with.
button, a, [role="button"] {
cursor: pointer;
}