CSSリファレンス

実践向けCSSリファレンス

マウスカーソルの形状を変更する cursor

概要

CSSプロパティ「cursor」は、マウスカーソルの形状を変更する際に使用します。例えば「link」要素にカーソルを当てると、マウスの形状が「pointer」に変化します。これはブラウザの初期設定によるものですが、こういった挙動を変化させることができます。

<ul>
  <li class="pointer">cursor: pointer</li>
</ul>
<style>
* {
  list-style: none;
  margin: 0;
  padding: 5px;
}
li {
  padding: 5px;
  border: 1px solid #ddd;
  margin-bottom: 3px;
}
li:hover {
  border-color: #def;
  background: #ddd;
}
.pointer:hover { cursor: pointer; }
</style>

取りうる値

用意されているキーワードや、オリジナルの画像を使用する場合はurlを指定します。urlの場合は、もし表示できなかった場合の為に代替表示をカンマ区切りで指定します。

{ cursor: キーワード; }
{ cursor: url(画像url, 表示されなかった場合のキーワード); }

それぞれのキーワードの説明です。実際の表示については後述の例を確認してみてください。

種類説明
一般auto初期値です。ブラウザが自動的に選択します
default矢印の様な形状の標準的な表示
noneカーソルを表示しない。
リンク及び状態context-menuカーソル下でコンテキストメニューが使用できる表示
helpヘルプが使用できる表示
pointer指差しマークの表示
progressプログラムがビジー状態であるが、まだユーザによる操作が可能な時の表示
waitプログラムがビジー状態で、ユーザによる操作が不可能な時の表示
選択cellセルを選択できる表示
crosshair十字カーソルの表示
texテキストを選択可能である表示
vertical-text縦書きのテキストを選択可能である表示
ドラッグアンドドロップaliasエイリアスやショートカットが作成できる表示
copyコピー操作が可能である表示
moveオブジェクトが移動できる可能性がある表示
no-dropドロップが許可されていない表示
not-allowed操作を行う事が出来ない表示
リサイズ及びスクロールall-scroll任意の方向にスクロール可能な表示
col-resize水平方向にリサイズ可能である表示
row-resize垂直方向にリサイズ可能である表示
n-resize北方向の矢印表示
e-resize東方向の矢印表示
s-resize南方向の矢印表示
w-resize西方向の矢印表示
ne-resize北東方向の矢印表示
nw-resize北西方向の矢印表示
se-resize南東方向の矢印表示
sw-resize南西方向の矢印表示
ew-resize東西双方向へのサイズ変更が可能な矢印表示
ns-resize北南双方向へのサイズ変更が可能な矢印表示
nesw-resize北東、南西双方向へのサイズ変更が可能な矢印表示
nwse-resize北西、南東双方向へのサイズ変更が可能な矢印表示
ズームzoom-inズームインが可能な表示
zoom-outズームアウトが可能な表示
その他url表示させたい画像のurlを指定

各値の表示

カーソルを当てると、それぞれの表示を確認することができます。サンプルをみるとわかりますがこれらカーソルの形状は様々なシーンで使われています。ですので、開発者が意図的に操作(クリックできない所なのに、あたかもクリックできるようなカーソルに変化させるなど)することで、ユーザーを混乱させてしまう可能性があります。また、ブラウザによって対応しているキーワードが異なりますので、使用する際には十分注意しましょう。

<ul>
  <li class="auto">cursor: auto</li>
  <li class="default">cursor: default</li>
  <li class="none">cursor: none</li>
  <li class="context-menu">cursor: context-menu</li>
  <li class="help">cursor: help</li>
  <li class="pointer">cursor: pointer</li>
  <li class="progress">cursor: progress</li>
  <li class="wait">cursor: wait</li>
  <li class="cell">cursor: cell</li>
  <li class="crosshair">cursor: crosshair</li>
  <li class="text">cursor: text</li>
  <li class="vertical-text">cursor: vertical-text</li>
  <li class="alias">cursor: alias</li>
  <li class="copy">cursor: copy</li>
  <li class="move">cursor: move</li>
  <li class="no-drop">cursor: no-drop</li>
  <li class="not-allowed">cursor: not-allowed</li>
  <li class="all-scroll">cursor: all-scroll</li>
  <li class="col-resize">cursor: col-resize</li>
  <li class="row-resize">cursor: row-resize</li>
  <li class="n-resize">cursor: n-resize</li>
  <li class="e-resize">cursor: e-resize</li>
  <li class="s-resize">cursor: s-resize</li>
  <li class="w-resize">cursor: w-resize</li>
  <li class="ne-resize">cursor: ne-resize</li>
  <li class="nw-resize">cursor: nw-resize</li>
  <li class="se-resize">cursor: se-resize</li>
  <li class="sw-resize">cursor: sw-resize</li>
  <li class="ew-resize">cursor: ew-resize</li>
  <li class="ns-resize">cursor: ns-resize</li>
  <li class="nesw-resize">cursor: nesw-resize</li>
  <li class="nwse-resize">cursor: nwse-resize</li>
  <li class="zoom-in">cursor: zoom-in</li>
  <li class="zoom-out">cursor: zoom-out</li>
  <li class="url">cursor: url</li>
</ul>
<style>
* {
  list-style: none;
  margin: 0;
  padding: 5px;
}
li {
  padding: 5px;
  border: 1px solid #ddd;
  margin-bottom: 3px;
}
li:hover {
  border-color: #def;
  background: #ddd;
}
.auto:hover { cursor: auto; }
.default:hover { cursor: default; }
.none:hover { cursor: none; }
.context-menu:hover { cursor: context-menu; }
.help:hover { cursor: help; }
.pointer:hover { cursor: pointer; }
.progress:hover { cursor: progress; }
.wait:hover { cursor: wait; }
.cell:hover { cursor: cell; }
.crosshair:hover { cursor: crosshair; }
.text:hover { cursor: text; }
.vertical-text:hover { cursor: vertical-text; }
.alias:hover { cursor: alias; }
.copy:hover { cursor: copy; }
.move:hover { cursor: move; }
.no-drop:hover { cursor: no-drop; }
.not-allowed:hover { cursor: not-allowed; }
.all-scroll:hover { cursor: all-scroll; }
.col-resize:hover { cursor: col-resize; }
.row-resize:hover { cursor: row-resize; }
.n-resize:hover { cursor: n-resize; }
.e-resize:hover { cursor: e-resize; }
.s-resize:hover { cursor: s-resize; }
.w-resize:hover { cursor: w-resize; }
.ne-resize:hover { cursor: ne-resize; }
.nw-resize:hover { cursor: nw-resize; }
.se-resize:hover { cursor: se-resize; }
.sw-resize:hover { cursor: sw-resize; }
.ew-resize:hover { cursor: ew-resize; }
.ns-resize:hover { cursor: ns-resize; }
.nesw-resize:hover { cursor: nesw-resize; }
.nwse-resize:hover { cursor: nwse-resize; }
.zoom-in:hover { cursor: zoom-in; }
.zoom-out:hover { cursor: zoom-out; }
.url:hover { cursor: url(http://www-creators.com/wp-content/uploads/2017/12/css_list_icon3.png), pointer }
</style>

使用例

よく使われる例として、「button」要素などカーソルをそのまま当てても形状に変化のない場合に、ユーザーにクリックができるものと認識させるために値を指定することがあります。

<button class="pointer">OK</button>
<button class="pointer">NO</button>
<style>
button {
  padding: 10px;
  border-radius: 4px;
  width: 100px;
  border: 1px solid;
}
.pointer:hover {
  cursor: pointer; 
}
</style>

仕様書

関連CSSプロパティ

閉じる