pointer-events
試してみましょう
構文
css
/* キーワード値 */
pointer-events: auto;
pointer-events: none;
pointer-events: visiblePainted; /* SVG のみ */
pointer-events: visibleFill; /* SVG のみ */
pointer-events: visibleStroke; /* SVG のみ */
pointer-events: visible; /* SVG のみ */
pointer-events: painted; /* SVG のみ */
pointer-events: fill; /* SVG のみ */
pointer-events: stroke; /* SVG のみ */
pointer-events: all; /* SVG のみ */
/* グローバル値 */
pointer-events: inherit;
pointer-events: initial;
pointer-events: unset;
pointer-events プロパティは、以下の値の一覧から選択した単一のキーワードとして指定します。
値
auto-
要素は、
pointer-eventsプロパティが指定されていないときと同様にふるまいます。SVG コンテンツ内ではvisiblePaintedを指定したときと同じ効果になります。 none-
要素がポインターイベントの対象になることはありません。しかし、子孫要素が
pointer-eventsの別の値をセットされていた場合は、その子孫要素自体はポインターイベントのターゲットとなりえます。その場合、ポインターイベントはイベントキャプチャ/バブリングの過程で必要に応じて親要素のイベントリスナーをトリガーします。
SVG のみ(HTML では実験的)
visiblePainted-
SVG の場合のみ (HTML では実験的) の値です。要素の
visibilityプロパティにvisibleが設定されていて、かつ、例えばfillプロパティにnone以外の値が設定されている時の塗り (fill)、もしくはstrokeプロパティがnone以外の時の線 (stroke) の上にマウスカーソルがある場合のみ、要素がポインターイベントのターゲットになりえます。 visibleFill-
SVG の場合のみの値です。
visibilityプロパティがvisibleにセットされていて、塗り (fill) の上にマウスカーソルがある場合にのみ、要素がポインターイベントのターゲットになりえます。fillプロパティの値でイベント処理が変化することはありません。 visibleStroke-
SVG の場合のみの値です。
visibilityプロパティがvisibleにセットされていて、線 (stroke) の上にマウスカーソルがある場合にのみ、要素がポインターイベントのターゲットになりえます。strokeプロパティの値でイベント処理が変化することはありません。 visible-
SVG の場合のみ (HTML では実験的) の値です。
visibilityプロパティがvisibleにセットされていて、塗り (fill) か線 (stroke) の上にマウスカーソルがある場合にのみ要素がポインターイベントのターゲットになりえます。fillプロパティやstrokeプロパティの値でイベント処理が変化することはありません。 painted-
SVG の場合のみ (HTML では実験的) の値です。
fillプロパティがnone以外にセットされている塗りの(すなわちfill)要素、もしくはstrokeのプロパティがnone以外にセットされている線の(すなわちstroke)要素の上にマウスカーソルがいる場合にのみ要素がポインターイベントのターゲットになりえます。visibilityプロパティの値はイベントプロセスに影響を与えません。 fill-
SVG の場合のみの値です。塗り (
fill) の上にマウスカーソルがある場合にのみ要素がポインターイベントのターゲットになりえます。fillプロパティやvisibilityプロパティの値でイベント処理が変化することはありません。 stroke-
SVG の場合のみの値です。線 (
stroke) の上にマウスカーソルがある場合にのみ要素がポインターイベントのターゲットになりえます。strokeプロパティやvisibilityの値でイベント処理が変化することはありません。 all-
SVG の場合のみ (HTML では実験的) の値です。塗り (
fill) と線 (stroke) の上にマウスカーソルがある場合にのみ要素がポインターイベントのターゲットになりえます。fillやstrokeやvisibilityの値でイベント処理が変化することはありません。
解説
このプロパティが指定されないと、 visiblePainted の値の同じ性質が SVG コンテンツに適用されます。
値を none に設定すると、要素がポインターイベントのターゲットではないことを示すのに加え、ポインターイベントが要素を「通過」して、代わりに要素の「下」をターゲットにすることを指示します。
pointer-events を使用して要素がポインターイベントのターゲットとなることを防止するということは、必ずしもその要素のイベントリスナーが起動されない、することができないという意味ではありません。仮に要素の子要素のひとつで、 pointer-events がポインターイベントのターゲットになるよう明示的に設定されていた場合、その子要素をターゲットにするどのようなイベントも親要素を通過し、その際に親要素に設定されたイベントリスナーを起動します。もちろん、これらの子要素に触れず親要素にだけ触れるマウスの動きは、子要素と親要素のどちらにも捕まえられることはありません (親要素を「通過」し、その下にあるものがターゲットになります)。
pointer-events: none を持った要素は、 Tab キーを使用したキーボードナビゲーションによってフォーカスを受け取ります。
私たちは HTML で、どのような要素が、どんな時に、ポインターイベントを「捕まえる」かを (auto と none だけではなく) より細かく制御できるようにしたいと思っています。今後の HTML で pointer-events をどのように拡張すべきかを決めるうえで、このプロパティで実現したい具体例があれば、この wiki ページの Use Cases セクションに記入してください (きれいに整理してからなどと気にしなくても大丈夫です)。
公式定義
形式文法
例
基本的な例
この例では、すべての画像のポインターイベント (クリック、ドラッグ、ホバー等) を無効にします。
css
img {
pointer-events: none;
}
リンクの無効化
この例では、 http://example.com へのリンクのポインターイベントを無効にします。
HTML
html
<ul>
<li><a href="https://developer.mozilla.org">MDN</a></li>
<li><a href="http://example.com">example.com</a></li>
</ul>
CSS
css
a[href="http://example.com"] {
pointer-events: none;
}
結果
仕様書
| Specification |
|---|
| CSS Basic User Interface Module Level 4 # pointer-events-control |
| Scalable Vector Graphics (SVG) 2 # PointerEventsProperty |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- SVG 属性
pointer-events (en-US) - SVG 属性
visibility (en-US) - (X)HTML で使うことを踏まえた WebKit の PointerEventsProperty の仕様書
user-select- ユーザーがテキストを選択できるかどうかの制御