The cursor
CSS property specifies sets mouse cursor to display when the mouse pointer is over an element.
/* Keyword value */ cursor: pointer; cursor: auto; /* URL, with a keyword fallback */ cursor: url(hand.cur), pointer; /* URL and coordinates, with a keyword fallback */ cursor: url(cursor1.png) 4 12, auto; cursor: url(cursor2.png) 2 2, pointer; /* Global values */ cursor: inherit; cursor: initial; cursor: unset;
The cursor
property is specified as zero or more <url>
values, separated by commas, followed by a single mandatory keyword value. Each <url>
should point to an image file. The browser will try to load the first image specified, falling back to the next if it can't, and falling back to the keyword value if no images could be loaded (or if none were specified).
Each <url>
may be optionally followed by a pair of space-separated numbers, which represent <x><y>
coordinates. These will set the cursor's hotspot, relative to the top-left corner of the image.
For example, this specifies two images using <url>
values, providing <x><y>
coordinates for the second one, and falling back to the progress
keyword value if neither image can be loaded:
cursor: url(one.svg), url(two.svg) 5 5, progress;
<url>
url(…)
or a comma separated list url(…), url(…), …
, pointing to an image file. More than one <url>
may be provided as fallbacks, in case some cursor image types are not supported. A non-URL fallback (one or more of the keyword values) must be at the end of the fallback list. See Using URL values for the cursor property for more details.<x>
<y>
Move your mouse over values to see their live appearance in your browser:
Category | CSS value | Example | Description |
---|---|---|---|
General | auto | The UA will determine the cursor to display based on the current context. E.g., equivalent to text when hovering text. | |
default | The platform-dependent default cursor. Typically an arrow. | ||
none | No cursor is rendered. | ||
Links & status | context-menu | A context menu is available. | |
help | Help information is available. | ||
pointer | The cursor is a pointer that indicates a link. Typically an image of a pointing hand. | ||
progress | The program is busy in the background, but the user can still interact with the interface (in contrast to wait ). | ||
wait | The program is busy, and the user can't interact with the interface (in contrast to progress ). Sometimes an image of an hourglass or a watch. | ||
Selection | cell | The table cell or set of cells can be selected. | |
crosshair | Cross cursor, often used to indicate selection in a bitmap. | ||
text | The text can be selected. Typically the shape of an I-beam. | ||
vertical-text | The vertical text can be selected. Typically the shape of a sideways I-beam. | ||
Drag & drop | alias | An alias or shortcut is to be created. | |
copy | Something is to be copied. | ||
move | Something is to be moved. | ||
no-drop | An item may not be dropped at the current location. bug 275173: On Windows and Mac OS X, no-drop is the same as not-allowed . | ||
not-allowed | The requested action will not be carried out. | ||
grab | Something can be grabbed (dragged to be moved). | ||
grabbing | Something is being grabbed (dragged to be moved). | ||
Resizing & scrolling | all-scroll | 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 them. | ||
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 | Bidirectional resize cursor. | ||
ns-resize | |||
nesw-resize | |||
nwse-resize | |||
Zooming | zoom-in | Something can be zoomed (magnified) in or out. | |
zoom-out |
[ [ <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; } .bar { cursor: zoom-in; } /* A fallback keyword value is required when using a URL */ .baz { cursor: url("hyper.cur"), auto; }
Specification | Status | Comment |
---|---|---|
CSS Basic User Interface Module Level 3 The definition of 'cursor' in that specification. | 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. |
Initial value | auto |
---|---|
Applies to | all elements |
Inherited | yes |
Media | as each of the properties of the shorthand:
|
Computed value | as specified, but with <url> values made absolute |
Animation type | discrete |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 1 | 12 | 1 | 4
|
7 | 1.2 |
auto |
1 | 12 | 1 | 4 | 7 | 1.2 |
default |
1 | 12 | 1 | 4 | 7 | 1.2 |
inherit |
1 | 12 | 1 | 8 | 9 | 1.2 |
none |
5 | 12 | 3 | 9 | 15 | 5 |
context-menu |
1
|
12 | 1.5
|
10 | 10.6 | 3 |
help |
1 | 12 | 1 | 4 | 7 | 1.2 |
pointer |
1 | 12 | 1 | 6 | 7 | 1.2 |
progress |
1 | 12 | 1 | 6 | 7 | 1.2 |
wait |
1 | 12 | 1 | 4 | 7 | 1.2 |
cell |
1 | 12 | 1.5 | 10 | 10.6 | 3 |
crosshair |
1 | 12 | 1 | 4 | 7 | 1.2 |
text |
1 | 12 | 1 | 4 | 7 | 1.2 |
vertical-text |
1 | 12 | 1.5 | No | 10.6 | 3 |
alias |
1 | 12 | 1.5 | 10 | 10.6 | 3 |
copy |
1 | 12 | 1.5 | 10 | 10.6 | 3 |
move |
1 | 12 | 1 | 4 | 7 | 1.2 |
no-drop |
1 | 12 | 1.5 | 6 | 10.6 | 3 |
not-allowed |
1 | 12 | 1.5 | 6 | 10.6 | 3 |
all-scroll |
1 | 12 | 1.5 | 6 | 10.6 | 3 |
col-resize |
1 | 12 | 1.5 | 6 | 10.6 | 3 |
row-resize |
1 | 12 | 1.5 | 6 | 10.6 | 3 |
Unidirectional resize cursors (n-resize , e-resize , s-resize , w-resize , ne-resize , nw-resize , se-resize , and sw-resize ) |
1 | 12 | 1 | 4 | 7 | 1.2 |
Bidirectional resize cursors (ew-resize , nesw-resize , ns-resize , and nwse-resize ) |
1 | 12 | 1.5 | 10 | 10.6 | 3 |
Zoom cursors (zoom-in and zoom-out ) |
37
|
12 | 24
|
No | 24
|
9
|
Grab cursors (grab and grabbing ) |
68
|
14 | 27
|
No | Yes | 11
|
url() |
1 | 12 | 1.5
|
6 | ? | 3 |
url() positioning syntax
|
Yes | No | Yes | No | ? | Yes |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | No | ? | Yes | ? | ? | ? | ? |
auto |
No | ? | Yes | ? | ? | ? | ? |
default |
No | ? | Yes | ? | ? | ? | ? |
inherit |
No | ? | Yes | ? | ? | ? | ? |
none |
No | ? | Yes | ? | ? | ? | ? |
context-menu |
No | ? | Yes | ? | ? | ? | ? |
help |
No | ? | Yes | ? | ? | ? | ? |
pointer |
No | ? | Yes | ? | ? | ? | ? |
progress |
No | ? | Yes | ? | ? | ? | ? |
wait |
No | ? | Yes | ? | ? | ? | ? |
cell |
No | ? | Yes | ? | ? | ? | ? |
crosshair |
No | ? | Yes | ? | ? | ? | ? |
text |
No | ? | Yes | ? | ? | ? | ? |
vertical-text |
No | ? | Yes | ? | ? | ? | ? |
alias |
No | ? | Yes | ? | ? | ? | ? |
copy |
No | ? | Yes | ? | ? | ? | ? |
move |
No | ? | Yes | ? | ? | ? | ? |
no-drop |
No | ? | Yes | ? | ? | ? | ? |
not-allowed |
No | ? | Yes | ? | ? | ? | ? |
all-scroll |
No | ? | Yes | ? | ? | ? | ? |
col-resize |
No | ? | Yes | ? | ? | ? | ? |
row-resize |
No | ? | Yes | ? | ? | ? | ? |
Unidirectional resize cursors (n-resize , e-resize , s-resize , w-resize , ne-resize , nw-resize , se-resize , and sw-resize ) |
No | ? | Yes | ? | ? | ? | ? |
Bidirectional resize cursors (ew-resize , nesw-resize , ns-resize , and nwse-resize ) |
No | ? | Yes | ? | ? | ? | ? |
Zoom cursors (zoom-in and zoom-out ) |
No | ? | Yes | ? | ? | ? | ? |
Grab cursors (grab and grabbing ) |
No | ? | Yes | ? | ? | ? | ? |
url() |
No | ? | Yes | ? | ? | ? | ? |
url() positioning syntax
|
No | ? | No | ? | ? | ? | ? |
© 2005–2018 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