inert - 不活性化

トップ > HTMLリファレンス > inert

属性

<タグ名 inert> - 不活性化

サポート状況

IE を除くモダンブラウザで使用可能です。

説明

「inert」は「不活性な」という意味を持ちます。inert 属性を指定した要素およびその子孫要素を不活性化します。不活性化された要素は表示はそのままですが下記などがすべて無効化されます。検索対象からも除外されると説明されているサイトもありますが、inert を指定しても検索の対象にはなるようです。

下記の様に使用します。

HTML
<div inert>
  <!-- 不活性なコンテンツ -->
</div>

JavaScript を用いて制御するには次のようにします。

JavaScript
document.getElementById(id).inert = true;

使用例としては自作のダイアログや popover="manual" のダイアログを表示した際に、ダイアログ以外のコンテンツを不活性にして入力を受け付けないようにする際に役立ちます。下記の例では、ダイアログが開いている間 <input type="text"> などの部品が入力を受け付けなくなります。

HTML
<style>
*::backdrop {
  background-color: rgba(0, 0, 0, 0.1);
}
*:popover-open {
  padding: 1rem;
  border: 1px solid #ccc;
  box-shadow: 5px 5px 10px 0px #999;
  text-align: center;
}
</style>

<div id="main">
 <button id="btn-show">OK</button>
 <input type="text">
</div>

<dialog id="dlg" popover="manual">
 This is a sample dialog.<br><br>
 <button id="btn-hide">OK</button>
</dialog>

<script>
document.getElementById("btn-show").addEventListener("click", () => {
  document.getElementById("main").inert = true;
  document.getElementById("dlg").showPopover();
});
document.getElementById("btn-hide").addEventListener("click", () => {
  document.getElementById("main").inert = false;
  document.getElementById("dlg").hidePopover();
});
</script>

上記の他にも下記のようなケースの代用として役立ちます。

親要素に inert=true を指定すると子孫要素に inert=false を指定しても部分的に不活性を解除することはできないので注意してください。

HTML
<div id="parent">
 <input type="text">
 <div id="child"><input type="text"></div>
</div>

<script>
document.getElementById("parent").inert = true;
document.getElementById("child").inert = false;   // 一部の子孫要素のみを不活性解除することはできない
</script>

Copyright (C) 2023 杜甫々
初版:2023年7月16日 最終更新:2023年7月16日
http://www.tohoho-web.com/html/attr/is.htm