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?

htmxを使ってみた-(5)HTMLのdialog-

Last updated at Posted at 2024-10-22

HTMLのdialogタグ

HTML5で<dialog>タグが新設されました。

<dialog id='detail'> <!-- id名は任意 -->
<!-- dialogに表示する中身 -->
</dialog>

と簡単に書き、JavaScriptで開いたり閉じたりします。
JavaScriptを利用してモーダルダイアローグを開く場合は

document.getElementById("detail").showModal();

ダイアローグを閉じる場合は、

document.getElementById("detail").close();

とします。
showModal()ではなく、show()とすれば、単純にダイアローグが開きます。
練習プログラムでは、 p00.js に書いてあります。

htmxのJavaScriptAPI

htmxでは、要素へのアクセス、要素へのクラスの追加・削除などのJavaScriptAPIが用意されています。
この関数群を使えば、生のJavaScriptよりも、簡単に記述することができます。
上記の例では、

p00.js
/**
 * 詳細ダイアローグボックスを開く
 */
function show_dialog() {
	htmx.find("#detail").showModal();
}

/**
 * 詳細ダイアローグボックスを閉じる
 */
function close_dialog() {
	htmx.find("#detail").close();
}

と書けます。生のJavaScriptより、若干ですが簡単になります。

ソースファイルのコメント
ソースファイルにコメントを書かない人がいますが、来週の自分のためにコメントはこまめに書きましょう。
VSCodeなどのモダンエディターでは、関数にカーソルを合わせると、コメントを表示してくれる機能があり便利です。

dialogの修飾

CSSでdialogを修飾しています。

p90.css
/* 詳細ダイアローグ */
#detail {  /*ダイアローグの外形*/
	padding: 0.5rem;
	width: 27rem;
	border: 1px solid var(--color-main);
	border-radius: 7px;
}

dialog::backdrop { /*ダイアローグの背景*/
	backdrop-filter: blur(1px);
	background-color: rgba(0, 0, 200, 0.1);
}

ダイアローグの表示、ブロック要素の角を丸くすること、背景をぼかすことなどをCSSで実現しています。
楽になったものです。

関連記事一覧

htmxを使ってみた-(1)htmxの基本-
htmxを使ってみた-(2)準備-
htmxを使ってみた-(3)ルート関数-
htmxを使ってみた-(4)htmxを使う-
htmxを使ってみた-(5)HTMLのdialog-
htmxを使ってみた-(6)データの表示-
htmxを使ってみた-(7)データ追加-
htmxを使ってみた-(8)要素の変更-
htmxを使ってみた-(9)ページの再読み込み-
htmxを使ってみた-(10)データの変更-
htmxを使ってみた-(11)データベースの排他制御-
htmxを使ってみた-(12)確認ダイアローグ-
htmxを使ってみた-(13)データ削除-(最終)

0
0
1

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?