

:modal疑似クラスとは?
:modal疑似クラスは、モーダル要素にスタイルを適用するためのCSS疑似クラスです。この疑似クラスは、特にHTMLのdialogタグと組み合わせることで効果的に使用できます。以下のような状況で活用され、モーダルのデザインや操作性を簡単にカスタマイズできるのが特徴です。
・JavaScriptのshowModal()
メソッドを使ってモーダルを表示した場合
・JavaScriptのrequestFullscreen()
メソッドを使用してフルスクリーンモードに切り替えた場合
基本的な使い方
:modal疑似クラスは、モーダル要素に対して直接使用できるCSSの便利な機能です。特に、HTMLのdialog要素と組み合わせることで、モーダルが表示されている状態に応じたスタイルを簡単に適用できます。
/*-- 例 --*/
dialog:modal {
background-color: rgba(0, 0, 0, 0.8);
color: white;
border: none;
padding: 20px;
border-radius: 8px;
}
実装例
以下は、<dialog>要素を利用したモーダルの簡単な実装例です。
:modal疑似クラスを使用することで簡単にモーダルにアニメーションを付けることができます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>:modal疑似クラス実装例</title>
<style>
dialog:modal {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
animation: fadeIn 0.3s ease-in-out;
width: 400px;
height: 300px;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: scale(0.7);
}
to {
opacity: 1;
transform: scale(1);
}
}
</style>
</head>
<body>
<button id="openModal">モーダルを開く</button>
<dialog id="myModal">
<h2>モーダルのタイトル</h2>
<p>モーダルの内容がここに表示されます。</p>
<button id="closeModal">閉じる</button>
</dialog>
<script>
const openModal = document.getElementById("openModal");
const closeModal = document.getElementById("closeModal");
const modal = document.getElementById("myModal");
openModal.addEventListener("click", () => modal.showModal());
closeModal.addEventListener("click", () => modal.close());
</script>
</body>
</html>
メリットと注意点
メリット
モーダル状態の検出が簡単:modal
疑似クラスを使うことで、従来必要だったJavaScriptや追加クラスによる制御を省略できます。CSSだけで状態に応じたスタイル変更が可能です。
コードの簡潔化
JavaScriptを使用してクラスを操作する手間を削減できるため、コードが簡潔になります。これにより、保守性や可読性が向上します。
アニメーションの実装が簡単
:modalを活用することで、モーダルの状態遷移に合わせたアニメーションをCSSで簡単に設定可能です。
注意点
ブラウザのサポート状況
最近のバージョンには対応していますが古いバージョンのブラウザには対応していませんのでCan i use等で対応状況を確認して使用する必要があります。
まとめ
:modal疑似クラスは、モーダル要素の状態をCSSで簡単にスタイル付けできる便利な機能です。これにより、モーダル機能の実装が効率化され、コードの保守性が向上します。特に、HTMLのdialog要素と組み合わせることで、デザインの自由度がさらに広がるのですがブラウザのサポート状況には注意が必要です。効率的にモーダルをカスタマイズしたい場合に、ぜひ活用してみてください。
参考文献
:modal – CSS: Cascading Style Sheets | MDN
HTML5&CSS3デザイン 現場の新標準ガイド【第2版】