0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

モーダル技術の比較検証

Last updated at Posted at 2025-06-20

技術検証メモ

dialog要素の普及状況

dialog要素は、Chromeでは2014年から、SafariやFirefoxでも2022年以降に標準サポートされ、主要ブラウザでほぼ利用可能。

標準APIであり、外部ライブラリ不要でシンプル・アクセシブルなモーダルが作れるため、近年は新規プロジェクトやモダンなWeb開発での採用が増えている。

コード量が少なく、メンテナンス性・アクセシビリティ・セキュリティ面でも優れている。

jQuery+loadやBootstrap Modalの現状

jQueryによるモーダル実装は、2010年代のWeb開発で非常に一般的でした。特に既存のレガシーシステムや、jQuery依存のサイトでは今も多く使われている。

Bootstrap ModalなどのUIフレームワークも、企業サイトや管理画面などで依然として多用されています。

動的なHTML読み込み(load)や複雑なカスタマイズが必要な場合、jQueryやBootstrapの方が柔軟なケースがある。

現場での使い分け傾向

dialog要素

新規開発、モダンWeb、SPA 急速に普及中。今後主流になる流れ

jQuery/Bootstrap Modal

レガシー、既存資産、複雑な要件 依然多いが、新規では減少傾向

Jqueryサンプル

dialog要素を使ったモーダルのサンプル

<!-- ダイアログ本体 -->
<dialog id="myDialog">
  <h2>モーダルタイトル</h2>
  <p>ここに内容を書きます。</p>
  <form method="dialog">
    <button>閉じる</button>
  </form>
</dialog>)

<!-- モーダルを開くボタン -->
<button id="openDialog">モーダルを開く</button>

// JavaScriptでモーダルを開く
document.getElementById('openDialog').addEventListener('click', () => {
  document.getElementById('myDialog').showModal();
});

動的にタイトルや内容を変更したい場合も簡単です。

document.getElementById('openDialog').addEventListener('click', () => {
  const dialog = document.getElementById('myDialog');
  dialog.querySelector('h2').textContent = '新しいタイトル';
  dialog.querySelector('p').textContent = '新しい内容です。';
  dialog.showModal();
});

CSSでバックドロップをカスタマイズ

dialog::backdrop {
  background: rgba(0,0,0,0.5); /* 半透明の黒背景 */
}

わかったこと

dialog要素は便利だった。しかし、レガシーてきな複雑すぎるモーダルを保守運用していくには、JqueryやBootstrapを使う傾向もあるという点を理解した。

まとめ

dialog要素を使うと、jQueryやdivベースの自作モーダルより圧倒的にシンプル&少ないコードでモーダルが実装できる。

標準APIなのでアクセシビリティやフォーカス制御も自動で対応できる。

ボタン一つで開閉でき、内容やタイトルも簡単に動的変更できる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?