CSS の cursor プロパティにオリジナルカーソルを指定するときの注意

問題

CSS には cursor プロパティがあり、マウスカーソル (ポインター) の形状を指定することが出来ます。

んでもって、元々定義されているカーソルの形状だけでなく、独自のカーソル画像を指定することもできます。 が、今日、cursor プロパティで独自のカーソルを指定すると何故かエラーになってしまいました。 Firefox 3.5 のエラーコンソールには


'cursor' の値をパース中にエラーが発生しました。 このスタイル宣言は無視されました。

と表示されていたのですが、原因がわからず色々悩んでいました。 ちなみに CSS

.test {
cursor: url("xxx.png");
}

のように指定していました。

原因と解決策

W3C の勧告を見たらわかるように、cursor プロパティの値としての <URL> はオプションで指定可能 (あってもなくても良い) なのですが、<URL> 以外の auto や pointer なども必ず 1 つ指定しなければいけません。 (2 つ以上ではダメ。 必ず 1 つ。)

つまり、<URL> のみを cursor プロパティの値に指定することはできないんですね! 今回の例では

.test {
cursor: url("xxx.png"), pointer;
}
という風に、<URL> での指定の後にカンマ区切りで pointer などの定義済みのカーソル形状を指定してやる必要があります。

インターネット上の情報をいくつか見てみましたけど、このことについて触れていない (というか <URL> だけ指定するするという間違った指定をしている) ページもありましたので注意してください。 例えば スタイルシートリファレンス とか。