pointer-events クリック無効化

本記事は広告が含まれる場合があります CSS

pointer-events:none;によるクリックの無効化方法

今回はCSSのプロパティであるpointer-event:none;でクリックイベントを無効化する方法とよくある使用例をご紹介します。

「スマホではクリックできる電話発信リンクをPCではクリックできないようにしたい」などといった場面などに活用することができます。

pointer-events:none; 対象要素に対して、クリックやタッチ、ホバーイベントなどを無効化する。
キーイベント(キーボード操作)に関しては無効化されない点に注意

 

スマホ・パソコンでの電話発信リンクの表示例

 

 

 

ponter-eventsプロパティとは?

ponter-events:noneでクリックなどを無効化

pointer-eventsは、クリックやタッチ、ホバーイベントなどを無効化することができるCSSプロパティです。

デフォルトでは値が「auto」となっていて通常通りイベントが作動しますが、これを「none」に変更してあげることで無効化することが可能です。

pointer-events: none;を使用した例

なお「auto(初期値)」や「none」以外にも値はありますが、それらは全てSVG向けの値となっている為、基本的にはこの2つを覚えておけば問題ありません。

pointer-eventsの値 意味
auto(初期値) 通常通り、イベントが作動する。
none 対象要素に対して、クリックやタッチ、ホバーイベントなどが作動しなくなる。

(※ただし、子孫要素に pointer-events の別の値をセットしている場合は、子孫要素に関してはイベントを作動させることができる。)

 

pointer-eventsはキーイベントでは無効化されない点に注意

pointer-eventsはキーイベント(※)では無効化されない点に注意ください。

例えばリンクにpointer-events:none;を指定してクリック無効化していても、Tabキーを押してフォーカスしてそのままEnterキーを押した場合はリンク先に飛ぶことができてしまいます。


 

pointer-eventsはあくまでも、「要素に対するクリックやタッチ、ホバーイベントなどを無効化できるプロパティ」であるという点に注意しましょう。

キーイベントとはキーボート操作によるイベントのこと

キーイベントとはユーザーがキーボードを操作したときに発生するイベントのことです。代表的なキーイベントには以下のようなものがあります。

keydown キーボードのキーが押されたときに発生するイベント
keyup キーボードのキーを離されたときに発生するイベント

 


 

pointer-events:none;の利用シーン・実用例

pointer-eventsは主に以下のような場面で使用されることが多いです。

■pointer-eventsプロパティの使用例

  1. 後ろ側にある要素をクリックできるようにする
  2. 表示されているページのナビゲーションリンクのみ無効化する
  3. スマホの時にリンクを押せなくする
  4. ホバーのトリガーになる要素を変更する
  5. 画像の保存をさせないようにする

 

後ろ側にある要素をクリックできるようにする

1つ目は、後ろ側にある要素をクリックできるようにしたいといった場面です。

positionなどを使って要素を配置した場合、以下のように要素同士が被るといった時が多々あります。

こういった場合に上に配置された画像に対してpointer-events: none;を指定してあげると下に配置されている要素がクリックできるようになります。

上に配置された画像に対してpointer-events: none;を指定してあげると下に配置されている要素がクリックできる例

 

表示されているページのナビゲーションリンクのみ無効化する

2つ目は、表示されているページのナビゲーションリンクのみクリックやタッチイベントを無効化にしたいといった場面です。

例えば「ホーム」を開いている場合はナビゲーションにある「ホーム」リンクだけクリックできないといった動作をさせることができます。

「ホーム」画面が開かれている為、「ホーム」だけクリックできない例

これは開かれているページと同じURLのリンクだけpointer-events:noneでクリックを無効化するか、spanタグのような異なるHTMLタグを使用していることが多いです。

 

パソコン・タブレットの時にリンクを押せなくする

3つ目は、パソコン・タブレットの時にリンクを押せなくしたいといった場面です。

具体的にはメディアクエリを使って、「600px以上のウィンドウ幅ではpointer-events: none;にする」といったような使い方をします。

PC表示では電話発信リンクがクリックできないようにするといった場面をイメージしてもらえると分かりやすいと思います。

スマホ・パソコンでの電話発信リンクの表示例
 
関連CSSメディアクエリとViewPortによるレスポンシブデザイン

 

ホバーのトリガーになる要素を変更する

4つ目は、ホバーのトリガーになる要素を変更したいといった場面です。

通常であればホバーをした際に要素のスタイルを変えたい場合、その要素自身がホバーのトリガーになります。

しかし、親要素と子孫要素の両方にpointer-eventsを指定することで子孫要素をホバーした際に親要素のスタイル変更することができます。

子要素をホバーしているのに親要素のスタイルが変更される例

こちらは少し応用的な使用場面かもしれません。

 

画像の保存をさせないようにする

5つ目は、画像の保存をさせないようにしたいといった場面です。

通常パソコンであれば、右クリック→「名前を付けて画像を保存」とすればウェブサイトの画像を保存することができます。

しかし、画像に対してpointer-events: none;を指定してあげるとこれを防ぐことができます。

pointer-events: none;を指定することで画像の保存ができなくなる例

※なおスクリーンショットを取ることや検証画面から画像のパスを辿ることはできるので、完全に他者による画像の保存を防ぐことはできません

 
 

まとめ

まとめです。今回はCSSのpointer-eventプロパティを使ってクリックイベントを無効化する方法とよくある使用例をご紹介しました。

pointer-eventsプロパティを使用すると、クリックやタッチ、ホバーイベントなどを無効化することができます。

ただし、キーイベント(キーボード操作で発生するイベント)に対しては無効化できない点に注意しましょう。

pointer-eventsの値 意味
auto(初期値) 通常通り、イベントが作動する。
none イベントが作動しなくなる。

(※ただし、子孫要素に pointer-events の別の値をセットしている場合は、子孫要素に関してはイベントを作動させることができる。)

今回は以上になります。最後までご覧いただきありがとうございました。
 

 

「業者に任せたけど、更新ができない」「本で独学は時間がかかりすぎる・・」そんなお悩みの方も多いのではないでしょうか。

個別指導形式のスクールでは、自分の知りたいことをピンポイントで学習・達成でき、自分で更新もできるというメリットもあります。

教室の無料事前相談もしておりますので、まずはお気軽にご登録ください。

詳細はこちら

YouTubeチャンネル開設しました!

WEBST8 YouTube Channel 開設
最大月間50万PVの当ブログをベースに、Youtube動画配信にてWordPress、ホームページ作成、ブログのことについてお役立ち情報を随時配信していきます。

ご興味ある方はぜひチャンネル登録をしていただけますと幸いです。

『自分で作る選択を』
自分でホームページ作成・Web集客したいホームページ作成スクール・教室

自分でホームページ作成・Web集客したいホームページ作成スクール・教室 WEBST8


 

検索して記事を見つける

探したいキーワードを入力・検索して記事を見つけたい方はこちら

-CSS