The cursor
CSS property sets the type of mouse cursor, if any, to show when the mouse pointer is over an element.
Syntax
/* 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;
Values
<url>
- A
url(…)
or a comma separated listurl(…), 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>
- Optional x- and y-coordinates. Two unitless nonnegative numbers less than 32.
- Keyword values
-
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 asnot-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 asmove
.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
ands-resize
are the same asns-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
Usage notes
Although the specification does not define any size limitations for cursor
, individual user agents may choose to do so. Cursor changes using images which are outside the size range supported by the browser will generally just be ignored.
Check the Browser compatibility table for any notes on cursor size limits.
Formal definition
Initial value | auto |
---|---|
Applies to | all elements |
Inherited | yes |
Computed value | as specified, but with <url> values made absolute |
Animation type | discrete |
Formal syntax
[ [ <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 ] ]
Examples
Setting cursor types
.foo { cursor: crosshair; } .bar { cursor: zoom-in; } /* A fallback keyword value is required when using a URL */ .baz { cursor: url("hyper.cur"), auto; }
Specifications
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. |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
cursor | Chrome Full support 1 | Edge Full support 12 | Firefox
Full support
1
| IE
Full support
4
| Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
alias | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 10 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
all-scroll | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 6 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
auto | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
Bidirectional resize cursors (ew-resize , nesw-resize , ns-resize , and nwse-resize ) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 10 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
cell | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 10 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
col-resize | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 6 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
context-menu | Chrome
Full support
1
| Edge Full support 12 | Firefox
Full support
1.5
| IE Full support 10 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android
Full support
18
| Firefox Android No support No | Opera Android
Full support
14
| Safari iOS Full support 1 | Samsung Internet Android
Full support
1.0
|
copy | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 10 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
crosshair | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
default | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
Grab cursors (grab and grabbing ) | Chrome
Full support
68
| Edge Full support 14 | Firefox
Full support
27
| IE No support No | Opera
Full support
55
| Safari
Full support
11
| WebView Android No support No | Chrome Android
Full support
68
| Firefox Android No support No | Opera Android
Full support
48
| Safari iOS Full support 1 | Samsung Internet Android
Full support
10.0
|
help | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
inherit | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 8 | Opera Full support 9 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
move | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
no-drop | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 6 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
none | Chrome Full support 5 | Edge Full support 12 | Firefox Full support 3 | IE Full support 9 | Opera Full support 15 | Safari Full support 5 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 4.2 | Samsung Internet Android Full support 1.0 |
not-allowed | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 6 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
pointer | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 6 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
progress | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 6 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
row-resize | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE Full support 6 | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
text | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
Unidirectional resize cursors (n-resize , e-resize , s-resize , w-resize , ne-resize , nw-resize , se-resize , and sw-resize ) | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
url() | Chrome Full support 1 | Edge Full support 12 | Firefox
Full support
1.5
| IE Full support 6 | Opera Full support 15 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
url() positioning syntax | Chrome Full support 1 | Edge Full support 79 | Firefox
Full support
1.5
| IE No support No | Opera Full support 15 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
vertical-text | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1.5 | IE No support No | Opera Full support 10.6 | Safari Full support 3 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
wait | Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | IE Full support 4 | Opera Full support 7 | Safari Full support 1.2 | WebView Android No support No | Chrome Android Full support 18 | Firefox Android No support No | Opera Android Full support 14 | Safari iOS Full support 1 | Samsung Internet Android Full support 1.0 |
Zoom cursors (zoom-in and zoom-out ) | Chrome
Full support
37
| Edge Full support 12 | Firefox
Full support
24
| IE No support No | Opera
Full support
24
| Safari
Full support
9
| WebView Android No support No | Chrome Android
Full support
37
| Firefox Android No support No | Opera Android
Full support
24
| Safari iOS Full support 1 | Samsung Internet Android
Full support
3.0
|
Legend
- Full support
- Full support
- No support
- No support
- See implementation notes.
- See implementation notes.
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.