pointer-eventsプロパティでクリックイベントを無効化にする|気になるCSSプロパティ

今回はクリックイベント判定を操作するpointer-eventsプロパティについてじっくり見ていきます。
使い方
pointer-eventsプロパティは、基本的に値はautoかnoneのどちらかです。
auto(デフォルト)が通常通りの挙動になり、noneを指定するとクリックイベントが無効になります。
クリックイベントとは「クリック」「ホバー」の事を指していて、テキストの選択は可能です。
.btn {
pointer-events: auto; // クリックイベント有効
}
.btn.disabled{
pointer-events: none; // クリックイベント無効
}ちなみに、テキストの選択を無効化したい場合はuser-selectという別のプロパティを使用します。
対応状況

CSS pointer-events (for HTML) – Can I use…
Can I useを見ると、対応状況はOpera Miniを除けば全て対応されています。IEも11以降は対応しているので、使ってもほぼほぼ問題ないでしょう。
使い所
「何に使うの?」と思う人もいるかもしれませんが、以下のような使い方が考えられます。
- PCだと一部クリックだが、SPだと全体をクリックできるようにしたい時
- <input>系(特に<select>)の装飾をする時に、装飾にもクリック判定が効く
- disabled状態にわざわざホバー時のスタイル打ち消しをしなくても、pointer-events一行書くだけでhoverしなくなる
普通のWebサイトというより、WebサービスやWebアプリの実装時に使うことが多そうです。
selectの装飾に使ってみる
例えばselect要素に装飾を当てたい時、select要素には疑似要素を付ける事ができません。
ですから、selectをlabelやdivで囲ってそこに擬似要素を付けて装飾をします。
しかし、そのままではアイコン部分をクリックしてもselectは反応しません。

そこで、pointer-eventsを使います。
label:beforeに対してpointer-events: none;を指定すると、label:beforeのクリックイベントが無効化されて後ろにあるselectがクリックされます。
決してよく使うわけではありませんが、このようにユーザーの使い勝手をよくする上で覚えていて損はないプロパティになります。

Visual Studio Codeの拡張機能「Trailing Spaces」でコードの中にある余計なスペースを表示する
JavaScriptのテンプレートリテラル内で条件分岐を行う方法
SafariのURLメニュー部分も考慮できるCSSの単位「dvh」
Visual Studio Codeのマルチカーソル機能で文字操作を一括で行う
全角スペースを可視化してくれるVisual Studio Codeの拡張機能「zenkaku」
Apacheのテストページを非表示にする方法
CSS疑似要素の「:empty」でタグの中身が空のときのスタイルを設定する
Visual Studio CodeをMarkdownエディターとして使用する
Post Snippetsを使ってWordPressでショートコードをの登録と管理をもっと楽に!!
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
メニューバーアイコン管理の鉄板ツール「Bartender 4」で使用頻度の高いアプリだけメニューバーに表示させる
220以上の有料Macアプリが使えるサブスクサービス「Setapp」
Client Folder Makerでファイルの中身まで一括で作成する方法
一瞬で日時を取得するKeyboard Maestroのタイムスタンプ機能についてまとめる
Transmit 5のPanic Syncでサーバー情報が同期されないときの対処法
液体が垂れているような図形「流体シェイプ」の作り方
Fantastical 2で予定の登録時に使えるキーワードまとめ
SourceTreeのカスタムアクションを使って差分ファイルだけをまとめる方法
Path FinderとFinderをいい感じに共存させるための設定
Alfredからメニューバーの項目を検索・実行するWorkflow「Menu Bar Search」