inert
inert グローバル属性は論理属性で、要素とそのフラットツリーの子孫すべてが「不活性」になることを示す論理属性です。inert 属性は、操作可能であってはならないコンテンツの範囲に追加することができます。要素が不活性状態になると、その要素およびすべての子要素(リンク、ボタン、フォームコントロールなどの通常は操作可能な要素を含む)は、フォーカスを受け取ったりクリックされたりすることができなくなるため、無効化されます。また、inert 属性は、画面外にあるべき要素や非表示にするべき要素にも追加できます。不活性状態の要素とその子要素は、タブ順序およびアクセシビリティツリーから除外されます。
showModal() で生成されたモーダルダイアログ (<dialog>) は、不活性状態から脱します。つまり、先祖から不活性を受け継ぐことはなく、自身に inert 属性を明示的に設定した場合にのみ不活性になります。
HTML の不活性な要素と、そのフラットツリーの子孫要素は次のようになります。
ユーザーが要素をクリックしたときに click イベントが発行されないようにします。
要素にフォーカスが当たらないようにして、 focus イベントが発生することを防ぎます。
ブラウザーのページ内検索機能を使用しているときに、要素のコンテンツが検索/照合されるのを防ぎます。
ユーザーが要素内のテキストを選択できないようにします。これは、 CSS プロパティ user-select を使用してテキストの選択を無効にするのと同じです。
ユーザーが、編集可能な要素のコンテンツを編集できないようにします。これは例えば、テキストの <input> フィールドのコンテンツや、contenteditable が設定されたテキスト要素を含みます。
アクセシビリティツリーから要素とそのコンテンツを除外して、支援技術から要素とそのコンテンツを非表示にします。
他にも以下の機能を使用して、要素とその子孫要素を不活性状態に設定することができます。
CSS の interactivity プロパティ
DOM の HTMLElement.inert プロパティ
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 102 | 102 | 112 | 15.5 | 102 | 15.5 | |
ignores find in page 要素はページ内検索の目的では無視される。 | 124 | 124 | 120 | | 124 | |
| DOM API | ||||||
| HTMLElement の inert プロパティは、この要素の inert 属性の値を反映します。論理値で、存在する場合は、フォーカスイベントや支援技術からのイベントを含む、要素に対するユーザーの入力イベントをブラウザーが「無視」するようにします。ブラウザーは、要素でのページ検索やテキスト選択も無視することができます。これは、モーダルのような UI を構築する際に、モーダルが表示されているときにフォーカスをモーダル内に「閉じ込める」場合に便利です。 | 102 | 102 | 112 | 15.5 | 102 | 15.5 |
inert (ignores find in page) 要素はページ内検索の目的では無視される。 | 124 | 124 | 120 | | 124 | |
基本構文
<!-- Disable content behind in modal view --> <main inert> <p>This part cannot be clicked or focused</p> <a href="#">Link also disabled</a> </main> <dialog open> <p>Modal content</p> </dialog> ライブデモ
実務での使いどころ
-
inert の活用
inert グローバル属性は論理属性で、要素とそのフラットツリーの子孫すべてが「不活性」になることを示す論理属性です。
注意点
- 古いブラウザでは対応していない場合がある。
アクセシビリティ
- スクリーンリーダーでの読み上げを確認すること。