CSS cursor Property
Description
The cursor property controls the visible mouse pointer when the pointer is over an element; it is a purely visual affordance that communicates possible interactions (for example, whether something is clickable, draggable, or resizable). Because it only affects appearance, it does not change the element’s ability to receive input or alter its behavior — it’s intended to guide the user’s expectations about what will happen if they click or drag.
When designing interfaces, consider how cursor interacts with event delivery and element interactivity. For example, the behavior of whether an element receives pointer events is governed by pointer-events, so changing an element’s cursor alone won’t make it interactive if pointer events are disabled. Likewise, when text selection is a concern, the selection behavior (which can influence the text-selection caret or selection cursor) is controlled with user-select, so cursor choices should be aligned with whether text within an element is selectable.
Practical use of cursor should prioritize clarity and consistency: use it to reinforce standard affordances rather than to create confusion (avoid using a “link” cursor on elements that do nothing). Do not rely solely on cursor changes to convey important information about interactivity or accessibility — always provide keyboard focus, clear visible focus indicators, and semantic HTML or ARIA roles so assistive technologies and keyboard users receive the same cues. Also remember that on touch-only devices the cursor is irrelevant, so ensure touch targets and gestures remain discoverable without pointer feedback.
In more complex UI scenarios, cursors are often used as part of a broader visual language: pairing cursor changes with animated feedback, hover states, and explicit icons helps users understand actions. Because cursor appearance can vary across platforms and user agent settings, design choices should be resilient—avoid critical functionality that depends on a very specific pointer look, and test interactions with different input modes (mouse, touch, stylus) to ensure a coherent experience.
Definition
- Initial value
- auto
- Applies to
- All elements
- Inherited
- Yes
- Computed value
- As specified, but with relative URI converted into absolute URI
- Animatable
- No
- JavaScript syntax
- object.style.cursor
Interactive Demo
Syntax
cursor: [ [<uri> [<x> <y>]?,]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out ] ] | inherit
Values
Move mouse over values to see cursors in action
General Purpose Cursors:- autoThe browser determines the cursor to display based on the current context.
- defaultThe platform-dependent default cursor. Often rendered as an arrow.
- noneNo cursor is rendered for the element.
- context-menuA context menu is available for the object under the cursor. Often rendered as an arrow with a small menu-like graphic next to it.
- helpHelp is available for the object under the cursor. Often rendered as a question mark or a balloon.
- pointerThe cursor is a pointer that indicates a link.
- progressThe program is busy in the background but the user can still interact with the interface.
- waitIndicates that the program is busy and the user should wait. Often rendered as a watch or hourglass.
- cellIndicates that a cell or set of cells may be selected. Often rendered as a thick plus-sign with a dot in the middle.
- crosshairA simple crosshair (e.g., short line segments resembling a "+" sign). Often used to indicate a two dimensional bitmap selection mode.
- textIndicating text can be selected, typically an I-beam.
- vertical-textIndicating that vertical text can be selected, typically a sideways I-beam.
- aliasIndicates an alias of/shortcut to something is to be created. Often rendered as an arrow with a small curved arrow next to it.
- copyIndicates something is to be copied. Often rendered as an arrow with a small plus sign next to it.
- moveIndicates something is to be moved.
- no-dropIndicates that the dragged item cannot be dropped at the current cursor location. Often rendered as a hand or pointer with a small circle with a line through it.
- not-allowedIndicates that the requested action will not be carried out. Often rendered as a circle with a line through it.
- n-resizeSome edge is to be moved. For example, the se-resize cursor is used when the movement starts from the south-east corner of the box.
- ne-resizeAs above
- e-resizeAs above
- se-resizeAs above
- s-resizeAs above
- sw-resizeAs above
- w-resizeAs above
- nw-resizeAs above
- ew-resizeIndicates a bidirectional resize cursor.
- ns-resizeAs above
- nesw-resizeAs above
- nwse-resizeAs above
- col-resizeIndicates that the item/column can be resized horizontally. Often rendered as arrows pointing left and right with a vertical bar separating them.
- row-resizeIndicates that the item/row can be resized vertically. Often rendered as arrows pointing up and down with a horizontal bar separating them.
- all-scrollIndicates that the something can be scrolled in any direction. Often rendered as arrows pointing up, down, left, and right with a dot in the middle.
- zoom-inIndicates that something can be zoomed (magnified) in.
- zoom-outIndicates that something can be zoomed (magnified) out.
- <uri>The user agent retrieves the cursor from the resource designated by the URI. If the user agent cannot handle the first cursor of a list of cursors, it must attempt to handle the second, etc. If the user agent cannot handle any user-defined cursor, it must use the cursor keyword at the end of the list.
Example
Browser Support
The following information will show you the current browser support for the CSS cursor property. Hover over a browser icon to see the version that first introduced support for this CSS property.
This property is supported by all modern browsers.
Desktop
Tablets & Mobile
Last updated by CSSPortal on: 1st January 2026
