The cursor CSS property specifies the mouse cursor displayed when the mouse pointer is over an element.
| Initial value | auto |
|---|---|
| Applies to | all elements |
| Inherited | yes |
| Media | visual, interactive |
| Computed value | as specified, but with URIs made absolute |
| Animation type | discrete |
| Canonical order | the unique non-ambiguous order defined by the formal grammar |
/* Keyword value only */ cursor: pointer; cursor: auto; /* Using URL and coordinates */ cursor: url(cursor1.png) 4 12, auto; cursor: url(cursor2.png) 2 2, pointer; /* Global values */ cursor: inherit; cursor: initial; cursor: unset;
uri>url(…) or a comma separated list url(…), url(…), …, pointing to an image file. More than one <uri> may be provided as fallback, in case some cursor image types are not supported. A non-URL fallback (one or more of the other values) must be at the end of the fallback list. See Using URL values for the cursor property for more details.<x> <y>
Move mouse over value for testing:
| Category | CSS value | Actual | Description |
|---|---|---|---|
| General | auto | The browser determines the cursor to display based on the current context. E.g. equivalent to text when hovering text. | |
default | ![]() | Default cursor, typically an arrow. | |
none | No cursor is rendered. | ||
| Links & status | context-menu | ![]() | A context menu is available under the cursor. Only IE 10 and up have implemented this on Windows: bug 258960. |
help | ![]() | Indicating help is available. | |
pointer | ![]() | E.g. used when hovering over links, typically a hand. | |
progress | ![]() | The program is busy in the background but the user can still interact with the interface (unlike for wait). | |
wait | ![]() | The program is busy (sometimes an hourglass or a watch). | |
| Selection | cell | ![]() | Indicating that cells can be selected. |
crosshair | ![]() | Cross cursor, often used to indicate selection in a bitmap. | |
text | ![]() | Indicating text can be selected, typically an I-beam. | |
vertical-text | ![]() | Indicating that vertical text can be selected, typically a sideways I-beam. | |
| Drag and drop | alias | ![]() | Indicating an alias or shortcut is to be created. |
copy | ![]() | Indicating that something can be copied. | |
move | ![]() | The hovered object may be moved. | |
no-drop | ![]() | Cursor showing that a drop is not allowed at the current location. bug 275173 on Windows and Mac OS X, "no-drop is the same as not-allowed". | |
not-allowed | ![]() | Cursor showing that something cannot be done. | |
| Resize & scrolling | all-scroll | ![]() | Cursor showing that something can be scrolled in any direction (panned). bug 275174 on Windows, "all-scroll is the same as move". |
col-resize | ![]() | The item/column can be resized horizontally. Often rendered as arrows pointing left and right with a vertical bar separating. | |
row-resize | ![]() | The item/row can be resized vertically. Often rendered as arrows pointing up and down with a horizontal bar separating them. | |
n-resize | ![]() | Some 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.In some environments, an equivalent bidirectional resize cursor is shown. For example, n-resize and s-resize are the same as ns-resize. | |
e-resize | ![]() | ||
s-resize | ![]() | ||
w-resize | ![]() | ||
ne-resize | ![]() | ||
nw-resize | ![]() | ||
se-resize | ![]() | ||
sw-resize | ![]() | ||
ew-resize | ![]() | Indicates a bidirectional resize cursor. | |
ns-resize | ![]() | ||
nesw-resize | ![]() | ||
nwse-resize | ![]() | ||
| Zoom | zoom-in | ![]() | Indicates that something can be zoomed (magnified) in or out. |
zoom-out | ![]() | ||
| Grab | grab | ![]() | Indicates that something can be grabbed (dragged to be moved). |
grabbing | ![]() |
[ [ <url> [ <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 | grab | grabbing ] ]
.foo {
cursor: crosshair;
}
/* use prefixed-value if "zoom-in" isn't supported */
.bar {
cursor: -webkit-zoom-in;
cursor: zoom-in;
}
/* standard cursor value as fallback for url() must be provided (doesn't work without) */
.baz {
cursor: url(hyper.cur), auto;
}
| Specification | Status | Comment |
|---|---|---|
| CSS Basic User Interface Module Level 3 The definition of 'cursor' in that specification. | Candidate Recommendation | Addition of several keywords and the positioning syntax for url(). |
| CSS Level 2 (Revision 1) The definition of 'cursor' in that specification. | Recommendation | Initial definition |
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer/Edge | Opera | Safari |
|---|---|---|---|---|---|---|
auto, crosshair, default, move, text, wait, help,n-resize, e-resize, s-resize, w-resize,ne-resize, nw-resize, se-resize, sw-resize
| 1.0 | (Yes) | 1.0 | 4.0[1] | 7.0 | 1.2 |
pointer, progress
| 1.0 | ? | 1.0 | 6.0 | 7.0 | 1.2 |
url() | 1.0 | ? | 1.5 4.0[2] | 6.0 | ? | 3.0 |
Positioning syntax for url() values
| (Yes) | ? | (Yes) | No support | ? | (Yes) |
not-allowed, no-drop, vertical-text, all-scroll,col-resize, row-resize
| 1.0 | ? | 1.5 | 6.0
| 10.6 | 3.0 |
alias, cell, copy,ew-resize, ns-resize, nesw-resize, nwse-resize
| 1.0 | ? | 1.5 | 10.0 | 10.6 | 3.0 |
context-menu | 1.0[3] | ? | 1.5[3] | 10.0 | 10.6 | 3.0 |
none | 5.0 | ? | 3.0 | 9.0 | 15.0 | 5.0 |
inherit | 1.0 | ? | 1.0 | 8.0 | 9.0 | 1.2 |
zoom-in, zoom-out
| 1.0 -webkit- | ? | 1.0 -moz- 24.0 | 13 | 11.6 15-23 -webkit- 24 | 3.0 -webkit- 9 |
grab, grabbing
| 1.0 -webkit- 22.0 -webkit-[4] | ? | 1.5 -moz- 27.0 | 14 | (Yes) | 4.0 -webkit- |
| Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
auto, crosshair, default, move, text, wait, help,n-resize, e-resize, s-resize, w-resize,ne-resize, nw-resize, se-resize, sw-resize
| No support | (Yes) | ? | ? | ? | ? |
pointer, progress
| No support | ? | ? | ? | ? | ? |
url() | No support | ? | ? | ? | ? | ? |
Positioning syntax for url() values
| No support | ? | ? | ? | ? | ? |
not-allowed, no-drop, vertical-text, all-scroll,col-resize, row-resize
| No support | ? | ? | ? | ? | ? |
alias, cell, copy,ew-resize, ns-resize, nesw-resize, nwse-resize
| No support | ? | ? | ? | ? | ? |
context-menu | No support | ? | ? | ? | ? | ? |
none | No support | ? | ? | ? | ? | ? |
inherit | No support | ? | ? | ? | ? | ? |
zoom-in, zoom-out
| No support | ? | ? | ? | ? | ? |
grab, grabbing
| No support | ? | ? | ? | ? | ? |
[1] In IE11, when cursor is applied to an element and this element is underneath an open <select> menu and the user hovers over a <select> menu item that's on top of said element, the cursor for said element will be displayed rather than the <select>'s normal cursor. See IE bug 963961.
[2] Support for this was added in Mac OS X.
[3] Only supported in Mac OS X and Linux.
[4] Support for this was added in Windows.
© 2005–2017 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/cursor