blob: e89a099d27455dae4b7736ad5133137fd7f275e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
---
title: pointer-events
slug: Web/CSS/pointer-events
tags:
- CSS
- CSS Property
- CSS プロパティ
- Reference
- SVG
- pointer-events
- 'recipe:css-property'
translation_of: Web/CSS/pointer-events
---
<div>{{CSSRef}}</div>
<p><strong><code>pointer-events</code></strong> は <a href="/ja/docs/Web/CSS">CSS</a> のプロパティで、特定のグラフィック要素がポインターイベントの<a href="/ja/docs/Web/API/Event/target">対象</a>になる可能性のある環境 (存在する場合) を設定します。</p>
<div>{{EmbedInteractiveExample("pages/css/pointer-events.html")}}</div>
<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
<h2 id="Syntax" name="Syntax">構文</h2>
<pre class="brush: css no-line-numbers notranslate">/* キーワード値 */
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;
</pre>
<p><code>pointer-events</code> プロパティは、以下の値の一覧から選択した単一のキーワードとして指定します。</p>
<h3 id="Values" name="Values">値</h3>
<dl>
<dt><code>auto</code></dt>
<dd>要素は、 <code>pointer-events</code> プロパティが指定されていないときと同様にふるまいます。SVGコンテンツ内では <code>visiblePainted</code> を指定したときと同じ効果になります。</dd>
<dt><code>none</code></dt>
<dd>要素がポインターイベントの<a href="/ja/docs/Web/API/Event/target">対象</a>になることはありません。しかし、子孫要素が <code>pointer-events</code> の別の値をセットされていた場合は、その子孫要素自体はポインターイベントのターゲットとなりえます。その場合、ポインターイベントはイベントキャプチャ/<a href="/ja/docs/Web/API/Event/bubbles">バブリング</a>の過程で必要に応じて親要素のイベントリスナーをトリガーします。</dd>
</dl>
<h4 id="SVG_only" name="SVG_only">SVG のみ(HTML では実験的)</h4>
<dl>
<dt><code>visiblePainted</code></dt>
<dd>SVG の場合のみ (HTML では実験的) の値です。要素の <code>visibility</code> プロパティに <code>visible</code> が設定されていて、かつ、例えば <code>fill</code> プロパティに <code>none</code> 以外の値が設定されている時の塗り (<code>fill</code>)、もしくは <code>stroke</code> プロパティが <code>none</code> 以外の時の線 (<code>stroke</code>) の上にマウスカーソルがある場合のみ、要素がポインターイベントのターゲットになりえます。</dd>
<dt><code>visibleFill</code></dt>
<dd>SVG の場合のみの値です。 <code>visibility</code> プロパティが <code>visible</code> にセットされていて、塗り (<code>fill</code>) の上にマウスカーソルがある場合にのみ、要素がポインターイベントのターゲットになりえます。 <code>fill</code> プロパティの値でイベント処理が変化することはありません。</dd>
<dt><code>visibleStroke</code></dt>
<dd>SVG の場合のみの値です。 <code>visibility</code> プロパティが <code>visible</code> にセットされていて、線 (<code>stroke</code>) の上にマウスカーソルがある場合にのみ、要素がポインターイベントのターゲットになりえます。 <code>stroke</code> プロパティの値でイベント処理が変化することはありません。</dd>
<dt><code>visible</code></dt>
<dd>SVG の場合のみ (HTML では実験的) の値です。 <code>visibility</code> プロパティが <code>visible</code> にセットされていて、塗り (<code>fill</code>) か線 (<code>stroke</code>) の上にマウスカーソルがある場合にのみ要素がポインターイベントのターゲットになりえます。 <code>fill</code> プロパティや <code>stroke</code> プロパティの値でイベント処理が変化することはありません。</dd>
<dt><code>painted</code></dt>
<dd>SVG の場合のみ (HTML では実験的) の値です。 <code>fill</code> プロパティが <code>none</code> 以外にセットされている塗りの(すなわち <code>fill</code> )要素、もしくは <code>stroke</code> のプロパティが <code>none</code> 以外にセットされている線の(すなわち <code>stroke</code> )要素の上にマウスカーソルがいる場合にのみ要素がポインターイベントのターゲットになりえます。 <code>visibility</code> プロパティの値はイベントプロセスに影響を与えません。</dd>
<dt><code>fill</code></dt>
<dd>SVGの場合のみの値です。塗り (<code>fill</code>) の上にマウスカーソルがある場合にのみ要素がポインターイベントのターゲットになりえます。 <code>fill</code> プロパティや <code>visibility</code> プロパティの値でイベント処理が変化することはありません。</dd>
<dt><code>stroke</code></dt>
<dd>SVGの場合のみの値です。線 (<code>stroke</code>) の上にマウスカーソルがある場合にのみ要素がポインターイベントのターゲットになりえます。 <code>stroke</code> プロパティや <code>visibility</code> の値でイベント処理が変化することはありません。</dd>
<dt><code>all</code></dt>
<dd>SVG の場合のみ (HTML では実験的) の値です。塗り (<code>fill</code>) と線 (<code>stroke</code>) の上にマウスカーソルがある場合にのみ要素がポインターイベントのターゲットになりえます。 <code>fill</code> や <code>stroke</code> や <code>visibility</code> の値でイベント処理が変化することはありません。</dd>
</dl>
<h2 id="Description" name="Description">解説</h2>
<p>このプロパティが指定されないと、 <code>visiblePainted</code> の値の同じ性質が SVG コンテンツに適用されます。</p>
<p>値を <code>none</code> に設定すると、要素がポインターイベントのターゲットではないことを示すのに加え、ポインターイベントが要素を「通過」して、代わりに要素の「下」をターゲットにすることを指示します。</p>
<p><code>pointer-events</code> を使用して要素がポインターイベントのターゲットとなることを防止するということは、必ずしもその要素のイベントリスナーが起動されない、することができないという意味ではありません。仮に要素の子要素のひとつで、 <code>pointer-events</code> がポインターイベントのターゲットになるよう明示的に設定されていた場合、その子要素をターゲットにするどのようなイベントも親要素を通過し、その際に親要素に設定されたイベントリスナーを起動します。もちろん、これらの子要素に触れず親要素にだけ触れるマウスの動きは、子要素と親要素のどちらにも捕まえられることはありません (親要素を「通過」し、その下にあるものがターゲットになります)。</p>
<p><code>pointer-events: none</code> を持った要素は、 <kbd>Tab</kbd> キーを使用したキーボードナビゲーションによってフォーカスを受け取ります。</p>
<p>私たちは HTML で、どのような要素が、どんな時に、ポインターイベントを「捕まえる」かを (<code>auto</code> と <code>none</code> だけではなく) より細かく制御できるようにしたいと思っています。今後の HTML で <code>pointer-events</code> をどのように拡張すべきかを決めるうえで、このプロパティで実現したい具体例があれば、<a class="link-https" href="https://wiki.mozilla.org/SVG:pointer-events">この wiki ページ</a>の Use Cases セクションに記入してください (きれいに整理してからなどと気にしなくても大丈夫です)。</p>
<h2 id="Formal_definition" name="Formal_definition">公式定義</h2>
<p>{{cssinfo}}</p>
<h2 id="Formal_syntax" name="Formal_syntax">形式文法</h2>
{{csssyntax}}
<h2 id="Examples" name="Examples">例</h2>
<h3 id="Basic_example" name="Basic_example">基本的な例</h3>
<p>この例では、すべての画像のポインターイベント (クリック、ドラッグ、ホバー等) を無効にします。</p>
<pre class="brush:css notranslate">img {
pointer-events: none;
}</pre>
<h3 id="Disabling_links" name="Disabling_links">リンクの無効化</h3>
<p>この例では、 http://example.com へのリンクのポインターイベントを無効にします。</p>
<h4 id="HTML">HTML</h4>
<pre class="brush:html notranslate"><ul>
<li><a href="https://developer.mozilla.org">MDN</a></li>
<li><a href="http://example.com">example.com</a></li>
</ul></pre>
<h4 id="CSS">CSS</h4>
<pre class="brush:css notranslate">a[href="http://example.com"] {
pointer-events: none;
}</pre>
<h4 id="Result" name="Result">結果</h4>
<div>{{EmbedLiveSample("Disabling_links", "500", "100")}}</div>
<h2 id="Specifications" name="Specifications">仕様書</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
<th scope="col">状態</th>
<th scope="col">備考</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('SVG2', 'interact.html#PointerEventsProperty', 'pointer-events')}}</td>
<td>{{Spec2('SVG2')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('SVG1.1', 'interact.html#PointerEventsProperty', 'pointer-events')}}</td>
<td>{{Spec2('SVG1.1')}}</td>
<td>初回定義</td>
</tr>
</tbody>
</table>
<p>このプロパティは HTML 要素に対する拡張であり、 CSS Basic User Interface Module Level 3 の草稿に記述がありますが、現在では同標準の <a href="http://wiki.csswg.org/spec/css4-ui#pointer-events">Level 4</a> に組み込まれています。</p>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
<p>{{Compat("css.properties.pointer-events")}}</p>
<h2 id="See_also" name="See_also">関連情報</h2>
<ul>
<li>SVG 属性 {{SVGAttr("pointer-events")}}</li>
<li>SVG 属性 {{SVGAttr("visibility")}}</li>
<li>(X)HTML で使うことを踏まえた <a class="external" href="http://webkit.org/specs/PointerEventsProperty.html">WebKit の PointerEventsProperty の仕様書</a></li>
<li>{{cssxref("user-select")}} - ユーザーがテキストを選択できるかどうかの制御</li>
</ul>
|