
記事内に商品プロモーションが含まれる場合があります
CSSではマウスカーソルの形状を自由に変えることができます。今回はその方法と各形状のブラウザ対応状況をまとめておきます。
1. CSSのcursorでカーソル形状を変える
CSSのcursor
プロパティにより、マウスカーソルの形状を変えることができます。具体的には以下のような指定をします。
◯◯ {cursor: 値;}
◯◯には「何にカーソルをのせたときに形状を変えるか」ということを示すセレクタを書きます。
値には「カーソルを具体的にどんな形にするのか」を書きます。cursor
で取ることのできる値は後ほどまとめて紹介します。

「このボタンの上にカーソルをのせたときには、カーソルを 指にする」というような指定ができるわけですね。
cursorの使用例
たとえば、リンク(aタグ)にカーソルをあてると「はてなマーク」になるようにしてみましょう。はてなマークの値はhelp
です。
<a href="https://saruwakakun.com/">サルワカとは?</a>CSS
a {cursor: help}
「サルワカとは?」にカーソルをあてるとはてなマークが表示されるはずです。このようにCSSで要素ごとに自由にマウスカーソルの形状を指定することができます。この例はaタグでしたが、divやpなどの他のタグにも使うことができます。うまく使えば直感的に分かりやすい表現ができるわけですね。
2. cursorの値一覧とブラウザの対応状況
「どんな値を取ることができるのか」とブラウザの対応状況をまとめました。よく使われそうなものから並べています。値名にカーソルをあてると実際の表示が確認できます。
右にスクロールできるかもです
cursor: | 表示 | 解説 | IE | Chrome | Safari | FireFox | Opera |
---|---|---|---|---|---|---|---|
auto | – | 初期値。状況に応じて変わる。リンクならpointerに文字ならtextに。 | ◯ | ◯ | ◯ | ◯ | ◯ |
default | ![]() |
普通の矢印。 | ◯ | ◯ | ◯ | ◯ | ◯ |
pointer | ![]() |
指差しの手に。主にリンクで使われる。 | ◯ | ◯ | ◯ | ◯ | ◯ |
move | ![]() |
十字の矢印。移動させられる物を示すのに便利。 | ◯ | ◯ | ◯ | ◯ | ◯ |
text | ![]() |
Iビーム。主にテキスト用 | ◯ | ◯ | ◯ | ◯ | ◯ |
crosshair | ![]() |
十字。選択範囲を作る動作に使えそう。 | ◯ | ◯ | ◯ | ◯ | ◯ |
cell | ![]() |
Excelのセル選択風。 | ◯ | ◯ | ◯ | ◯ | ◯ |
help | ![]() |
クエスチョンマーク。Windowsだと矢印カーソルと一緒に表示される。 | ◯ | ◯ | ◯ | ◯ | ◯ |
grab | ![]() |
基本的にgrabbingとセットで使う。 | ◯ | ◯ | ◯ | ◯ | |
grabbing | ![]() |
grabとセットで使う。:activeに指定することで掴むような動作に。 | ◯ | ◯ | ◯ | ◯ | |
zoom-in | ![]() |
拡大できるものを表すのに使える。 | ◯ | ◯ | ◯ | ◯ | |
zoom-out | ![]() |
縮小できるものを表すのに使える。 | ◯ | ◯ | ◯ | ◯ | |
not-allowed | ![]() |
操作できないことを表すのに便利。 | ◯ | ◯ | ◯ | ◯ | ◯ |
wait | ![]() |
ぐるぐる or 砂時計。処理中で操作ができないことを表すのに便利 | ◯ | ◯ | ◯ | ◯ | ◯ |
progress |
![]() |
矢印+ぐるぐるor砂時計。処理中だが操作はできるときを表す。 新しいMacだと矢印なしのぐるぐだけ。 |
◯ | ◯ | ◯ | ◯ | ◯ |
none | カーソルが非表示に。 | ◯ | ◯ | ◯ | ◯ | ◯ | |
alias | ![]() |
ショートカットを連想させるもの。 | ◯ | ◯ | ◯ | ◯ | ◯ |
context-menu | ![]() |
メニューアイコン+矢印。 | ◯ | ◯ | ◯ | Mac のみ |
◯ |
vertical-text | ![]() |
縦書きテキストの選択用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
n-resize | ![]() |
上へのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
e-resize | ![]() |
右へのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
s-resize | ![]() |
下へのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
w-resize | ![]() |
左へのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
nw-resize | ![]() |
左上へのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
ne-resize | ![]() |
右上へのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
se-resize | ![]() |
右下へのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
sw-resize | ![]() |
左下へのサイズ変更用 | ◯ | ◯ | ◯ | ◯ | ◯ |
ew-resize | ![]() |
左右のサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
ns-resize | ![]() |
上下のサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
nesw-resize | ![]() |
斜めのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
nwse-resize | ![]() |
斜めのサイズ変更用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
col-resize | ![]() |
幅を変更するとき用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
row-resize | ![]() |
高さを変更するとき用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
all-scroll | ![]() |
全方向にドラッグしてスクロールする用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
copy | ![]() |
矢印の横に+マーク。コピーできるものを表すのに便利 | ◯ | ◯ | ◯ | ◯ | ◯ |
no-drop | ![]() |
矢印+禁止マーク。ドロップできない領域を表す用。 | ◯ | ◯ | ◯ | ◯ | ◯ |
表示はMacのGoogle Chromeで見た場合です。 解説文はあくまでも使い方の一例です。目的に合った値を選ぶのが良いですね。
grabとgrabbingを使うときは接頭辞をつける
grab
とgrabbing
を指定したいときは、ベンダープレフィックス(接頭辞)をつけましょう。これはChromeや、Safari、Firefoxに対応させるために必要なおまじないのようなものです。具体的には以下のように書きましょう。
/*grabの場合*/ a { cursor:-moz-grab; cursor:-webkit-grab; cursor: grab; } /*grabbingの場合*/ a { cursor:-moz-grabbing; cursor:-webkit-grabbing; cursor: grabbing; }
ただしこのように書いてもInternet Explorerは非対応のままです…。
対応していなかった場合どうなるの?
たとえばcursor: grab
を指定したとき、非対応のWindowsではどのように表示されるのでしょうか。答えは、auto
(初期値)のカーソルなります。つまりリンクならpointerになり、テキストならtextとなるわけです。

ここまでたくさんの値を紹介してきました。「ユーザーが直感的にどんな操作をするべきなのか分かる」ようなカーソルを選ぶことが重要ですね。