国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

HTMLlt;dialog> 要素の使用方法

Dec 27, 2024 pm 07:03 PM

フロントエンド開発では、事前に構(gòu)築された UI コンポーネントを構(gòu)築または使用することが一般的なタスクです。ただし、これらのコンポーネントには制限があることがよくあります。通常、これらは特定のフレームワークに関連付けられており、複雑で標(biāo)準(zhǔn)化されていないロジックが必要です。長(zhǎng)い間、ダイアログ ウィンドウなどの基本的な UI コンポーネントはカスタム実裝、またはより単純な場(chǎng)合には、alert()、prompt()、confirm() などの組み込み JavaScript メソッドに依存していました。

嬉しいことに、ネイティブの

を使用してこのコンポーネントを?qū)g裝できるようになりました。 HTML 要素。HTML5 標(biāo)準(zhǔn)の一部であり、最新のすべてのブラウザで完全にサポートされています。

HTML タグは、W3C 作業(yè)草案の一部として 2013 年 5 月に導(dǎo)入され、

などのインタラクティブな要素とともに開始されました。 <概要>一般的な UI の課題に対処します。 2014 年にリリースされた 當(dāng)初は Google Chrome と Opera でのみサポートされていました。 の完全なサポートFirefox と Safari では 2022 年 3 月になって初めて導(dǎo)入され、実稼働プロジェクトでの採(cǎi)用が遅れました。ただし、主要ブラウザによる 2 年以上のサポートにより、要素が安定してカスタム
を置き換えられるようになりました

の機(jī)能を見てみましょう。さらに詳しく。

使用上の主要な側(cè)面

HTML タグは、ポップアップ または モーダル ウィンドウ として機(jī)能する、デフォルトで非表示のダイアログ ボックスを作成します。

ポップアップは、Cookie メッセージ、消えるトースト アラート、ツールヒント、または右クリックのコンテキスト メニュー要素などの単純な通知を表示するためによく使用されます。

モーダル ウィンドウは、ユーザーの確認(rèn)を必要とする通知や警告、複雑なインタラクティブ フォーム、畫像やビデオのライトボックスなど、ユーザーが特定のタスクに集中できるようにします。

ポップアップはページとの対話を妨げませんが、モーダル ウィンドウはドキュメントをオーバーレイし、背景を暗くし、他のアクションをブロックします。この動(dòng)作は、スタイルやスクリプトを追加しなくても機(jī)能します。唯一の違いは、ダイアログを開くために使用される方法です。

ダイアログウィンドウを開く方法

— ポップアップ:

<dialog>





<pre class="brush:php;toolbar:false">const popUpElement = document.getElementById("pop-up");

popUpElement.show();

— モーダルウィンドウ:

<dialog>





<pre class="brush:php;toolbar:false">const modalElement = document.getElementById("modal");

modalElement.showModal();

どちらの場(chǎng)合も、<ダイアログ> を開くと、タグは、その open 屬性を true に設(shè)定します。直接設(shè)定すると、ダイアログがモーダルではなくポップアップとして開きます。モーダル ウィンドウをレンダリングするには、適切なメソッドを使用する必要があります。最初に開くポップアップを作成するために JavaScript は必要ありません。

<dialog open>Hi, I'm a popup!</dialog>

試してみる:

  • .show() メソッドを使用してポップアップを開く: https://codepen.io/alexgriss/pen/zYeMKJE
  • .showModal() メソッドを使用してモーダル ウィンドウを開く: https://codepen.io/alexgriss/pen/jOdQMeq
  • open 屬性を直接変更する: https://codepen.io/alexgriss/pen/wvNQzRB

ダイアログウィンドウが閉じようとしています

ダイアログ ウィンドウは、開いた方法に関係なく、同じ方法で閉じます。ポップアップまたはモーダル ウィンドウを閉じる方法は次のとおりです:

— .close() メソッドを使用:

<dialog>





<pre class="brush:php;toolbar:false">const popUpElement = document.getElementById("pop-up");

popUpElement.show();

— Method="dialog" 屬性を持つフォームで送信イベントをトリガーすることによって:

<dialog>





<pre class="brush:php;toolbar:false">const modalElement = document.getElementById("modal");

modalElement.showModal();

— Esc キーを押します:

Esc キーで閉じることはモーダル ウィンドウでのみ機(jī)能します。最初に cancel イベントをトリガーしてから閉じるため、フォーム內(nèi)の変更が保存されていないことをユーザーに簡(jiǎn)単に警告できます。

試してみる:

  • close メソッドを使用してダイアログ ボックスを閉じる: https://codepen.io/alexgriss/pen/GRzwjaV
  • 送信フォームからダイアログ ボックスを閉じる: https://codepen.io/alexgriss/pen/jOdQVNV
  • Esc キーでモーダル ウィンドウを閉じる: https://codepen.io/alexgriss/pen/KKJrNKW
  • Esc キーでモーダル ウィンドウが閉じないようにする: https://codepen.io/alexgriss/pen/mdvQObN

クローズ時(shí)の戻り値

method="dialog" 屬性を使用してフォームでダイアログを閉じると、送信ボタンの値を取得できます。これは、クリックされたボタンに基づいてさまざまなアクションをトリガーする場(chǎng)合に便利です。値は returnValue プロパティに保存されます。

試してみましょう: https://codepen.io/alexgriss/pen/ZEwmBKx

仕組みを詳しく見てみる

ダイアログ ウィンドウの仕組みとブラウザ実裝の詳細(xì)を詳しく見てみましょう。

ポップアップの仕組み

<ダイアログ>を開く.show() を使用したポップアップとして、または open 屬性により、DOM 內(nèi)のposition:Absolute を使用して自動(dòng)的に配置されます。余白や境界線などの基本的な CSS スタイルが要素に適用され、ウィンドウ內(nèi)の最初のフォーカス可能な項(xiàng)目が autofocus 屬性によって自動(dòng)的にフォーカスされます。ページの殘りの部分はインタラクティブなままです。

モーダルウィンドウの仕組み

モーダル ウィンドウはポップアップよりも複雑な方法で設(shè)計(jì)され、動(dòng)作します。

ドキュメントのオーバーレイ

.showModal() でモーダル ウィンドウを開くと、<ダイアログ>要素は、ページの表示領(lǐng)域全體をカバーする特別な HTML レイヤーでレンダリングされます。この層は最上位層と呼ばれ、ブラウザによって制御されます。 Google Chrome などの一部のブラウザでは、各モーダルはこのレイヤー內(nèi)の個(gè)別の DOM ノードにレンダリングされ、要素インスペクターに表示されます。

How to Use the HTMLlt;dialog> 要素

レイヤーの概念は スタッキング コンテキスト を指し、ユーザーに対して Z 軸に沿って要素を配置する方法を定義します。 CSS で z-index 値を設(shè)定すると、要素のスタッキング コンテキストが作成され、そのコンテキスト內(nèi)で子の位置が計(jì)算されます。モーダル ウィンドウは常にこの階層の最上位にあるため、Z インデックスは必要ありません。

スタッキング コンテキストについて詳しくは、MDN をご覧ください。

トップレイヤーでレンダリングされる要素の詳細(xì)については、MDN にアクセスしてください。

ドキュメントのブロック

モーダル要素が最上位レイヤーでレンダリングされると、::backdrop 疑似要素が、表示されるドキュメント領(lǐng)域と同じサイズで作成されます。この背景により、pointer-events: none CSS ルールが設(shè)定されている場(chǎng)合でも、ページの殘りの部分との対話が妨げられます。

不活性屬性はモーダル ウィンドウを除くすべての要素に自動(dòng)的に設(shè)定され、ユーザーのアクションをブロックします。クリックとフォーカスのイベントが無効になり、スクリーン リーダーやその他の支援技術(shù)が要素にアクセスできなくなります。

不活性屬性について詳しくは、MDN をご覧ください。

集中動(dòng)作

モーダルが開くと、その中の最初のフォーカス可能な要素が自動(dòng)的にフォーカスを取得します。最初にフォーカスされた要素を変更するには、autofocus または tabindex 屬性を使用できます。ダイアログ要素自體に tabindex を設(shè)定することはできません。ダイアログ要素は、ページ上で不活性ロジックが適用されない唯一の要素であるためです。

ダイアログが閉じられると、フォーカスはダイアログを開いた要素に戻ります。

モーダルウィンドウによるU(xiǎn)Xの問題の解決

殘念ながら、

のネイティブ実裝は、要素は、モーダル ウィンドウとの対話のすべての側(cè)面をカバーしているわけではありません。次に、モーダル ウィンドウを使用するときに発生する可能性のある主な UX 問題とその解決方法について説明したいと思います。

スクロールブロック

ネイティブ HTML5 モーダル ウィンドウは、その下のコンテンツとの対話をブロックする ::backdrop 擬似要素を作成しますが、ページ スクロールは依然としてアクティブです。これはユーザーの注意をそらす可能性があるため、モーダルが開いたときに本文のコンテンツを切り取ることをお?jiǎng)幛幛筏蓼?

<dialog>





<pre class="brush:php;toolbar:false">const popUpElement = document.getElementById("pop-up");

popUpElement.show();

このような CSS ルールは、モーダル ウィンドウを開いたり閉じたりするたびに動(dòng)的に追加および削除する必要があります。これは、次の CSS ルールを含むクラスを操作することで実現(xiàn)できます:

<dialog>





<pre class="brush:php;toolbar:false">const modalElement = document.getElementById("modal");

modalElement.showModal();

サポート狀況がプロジェクトの要件を満たしている場(chǎng)合は、:has セレクターを使用することもできます。

<dialog open>Hi, I'm a popup!</dialog>

試してみましょう: https://codepen.io/alexgriss/pen/XWOyVKj

ウィンドウの外側(cè)をクリックしてダイアログを閉じる

これはモーダル ウィンドウの標(biāo)準(zhǔn)的な UX シナリオであり、いくつかの方法で実裝できます。この問題を解決するには 2 つの方法があります:

::backdrop 疑似要素の動(dòng)作に基づくメソッド

::backdrop 疑似要素をクリックすると、ダイアログ要素自體をクリックしたとみなされます。したがって、モーダル ウィンドウのコンテンツ全體を追加の

で囲むと、次に、ダイアログ要素自體をカバーすると、クリックがどこに向けられたのか (背景またはモーダル ウィンドウのコンテンツ) を判斷できます。

<ダイアログ> のブラウザのデフォルトのパディングと境界線のスタイルをリセットすることを忘れないでください。誤ってクリックされたときにモーダル ウィンドウが閉じないようにする要素:

<dialog>





<pre class="brush:php;toolbar:false">const popUpElement = document.getElementById("pop-up");

popUpElement.show();

ここで、モーダル ウィンドウの境界線と余白の共通スタイルを內(nèi)側(cè)のラッパーにのみ適用します。

內(nèi)部のラッパー要素ではなく、背景をクリックしたときにのみモーダル ウィンドウを閉じる関數(shù)を記述する必要があります。

<dialog>





<pre class="brush:php;toolbar:false">const modalElement = document.getElementById("modal");

modalElement.showModal();

試してみましょう: https://codepen.io/alexgriss/pen/mdvQXpJ

ダイアログ ウィンドウのサイズの決定に基づく方法

この方法は、モーダル コンテンツに追加のラッパーが必要だった最初の方法とは異なります。ここでは、余分なラッピングは必要ありません。必要なのは、クリックしたときにカーソルの位置が要素の領(lǐng)域の外に出ているかどうかを確認(rèn)することだけです:

<dialog open>Hi, I'm a popup!</dialog>

試してみましょう: https://codepen.io/alexgriss/pen/NWoePVP

ダイアログウィンドウのスタイル設(shè)定

要素は、多くのネイティブ HTML 要素よりもスタイルの點(diǎn)で柔軟です。ダイアログ ウィンドウのスタイルを設(shè)定する例をいくつか示します:

::backdrop セレクターを使用した背景のスタイル設(shè)定: https://codepen.io/alexgriss/pen/ExrOQEO

アニメーションダイアログウィンドウの開閉: https://codepen.io/alexgriss/pen/QWYJQJO

サイドバーとしてのモーダルウィンドウ: https://codepen.io/alexgriss/pen/GRzwxgr

アクセシビリティ

長(zhǎng)い間、<ダイアログ>要素にはアクセシビリティの問題がいくつかありましたが、現(xiàn)在はスクリーン リーダー (VoiceOver、TalkBack、NVDA) などの主要な支援技術(shù)で正常に動(dòng)作します。

<ダイアログ>が開くと、スクリーン リーダーによってフォーカスがダイアログに移動(dòng)します。モーダル ウィンドウの場(chǎng)合、ダイアログが閉じるまでフォーカスはダイアログ內(nèi)に殘ります。

デフォルトでは、<ダイアログ>要素は支援技術(shù)によって ARIA 屬性 role="dialog" を持つものとして認(rèn)識(shí)されます。モーダル ダイアログは、ARIA 屬性 aria-modal="true" を持つものとして認(rèn)識(shí)されます。

のアクセシビリティを向上させる方法をいくつか紹介します。要素:

aria-labeledby

ダイアログ ウィンドウ內(nèi)には常にタイトルを含め、

の aria-labelledby 屬性を指定します。要素。値はタイトルの ID に設(shè)定されます。

<dialog>





<pre class="brush:php;toolbar:false">const popUpElement = document.getElementById("pop-up");

popUpElement.show();

::backdrop 疑似要素のスタイルを設(shè)定する必要がある場(chǎng)合は、古いブラウザとの互換性を確保するために、それらのスタイルを?qū)潖辘工?.backdrop 要素にも適用してください:

<dialog>





<pre class="brush:php;toolbar:false">const modalElement = document.getElementById("modal");

modalElement.showModal();

<ダイアログ> をサポートしていないブラウザの場(chǎng)合のみ、動(dòng)的インポートを介してポリフィルを接続することをお?jiǎng)幛幛筏蓼埂R?

<dialog open>Hi, I'm a popup!</dialog>

結(jié)論

ネイティブ HTML5 element は、モーダル ウィンドウとポップアップを?qū)g裝するための比較的シンプルかつ強(qiáng)力なツールです。最新のブラウザで十分にサポートされており、バニラ JS とフロントエンド フレームワークの両方に基づくプロジェクトで問題なく使用できます。

この記事では、次のトピックについて説明しました:

  • の問題要素の解決;
  • との対話要素の API;
  • ダイアログ ウィンドウがブラウザ レベルで動(dòng)作する仕組み;
  • モーダルに関する一般的な問題とその解決策;
  • のアクセシビリティの向上スクリーン リーダーなどの支援技術(shù)の要素;
  • <ダイアログ> のブラウザサポートを拡大します。要素。

最後に、記事で説明されている主な側(cè)面を考慮した、純粋な JS でのモーダル ウィンドウ コンポーネントの実裝を確認(rèn)することをお?jiǎng)幛幛筏蓼? https://codepen.io/alexgriss/pen/abXPOPP

の操作について共有したかったのはこれだけです。 HTML要素。この記事が皆さんの実験のきっかけになれば幸いです!

以上がHTMLlt;dialog> 要素の使用方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java vs. JavaScript:混亂を解消します Java vs. JavaScript:混亂を解消します Jun 20, 2025 am 12:27 AM

JavaとJavaScriptは異なるプログラミング言語(yǔ)であり、それぞれ異なるアプリケーションシナリオに適しています。 Javaは大規(guī)模なエンタープライズおよびモバイルアプリケーション開発に使用されますが、JavaScriptは主にWebページ開発に使用されます。

JavaScriptコメント:短い説明 JavaScriptコメント:短い説明 Jun 19, 2025 am 12:40 AM

JavaScriptcommentsEareEssentialential-formaining、およびGuidingCodeexecution.1)single-linecommentseared forquickexplanations.2)多LinecommentsexplaincomplexlogiCorprovidededocumentation.3)clarifyspartsofcode.bestpractic

JSで日付と時(shí)間を操作する方法は? JSで日付と時(shí)間を操作する方法は? Jul 01, 2025 am 01:27 AM

JavaScriptで日付と時(shí)間を処理する場(chǎng)合は、次の點(diǎn)に注意する必要があります。1。日付オブジェクトを作成するには多くの方法があります。 ISO形式の文字列を使用して、互換性を確保することをお?jiǎng)幛幛筏蓼埂?2。時(shí)間情報(bào)を取得および設(shè)定して、メソッドを設(shè)定でき、月は0から始まることに注意してください。 3.手動(dòng)でのフォーマット日付には文字列が必要であり、サードパーティライブラリも使用できます。 4.ルクソンなどのタイムゾーンをサポートするライブラリを使用することをお?jiǎng)幛幛筏蓼?。これらの重要なポイントを?xí)得すると、一般的な間違いを効果的に回避できます。

なぜの下部にタグを配置する必要があるのですか? なぜの下部にタグを配置する必要があるのですか? Jul 02, 2025 am 01:22 AM

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

JavaScript vs. Java:開発者向けの包括的な比較 JavaScript vs. Java:開発者向けの包括的な比較 Jun 20, 2025 am 12:21 AM

javascriptispreferredforwebdevelopment、whilejavaisbetterforlge-scalebackendsystemsandroidapps.1)javascriptexcelsininintingtivewebexperiences withitsdynAmicnature anddommanipulation.2)javaofferstruntypyping-dobject-reientedpeatures

DOMでのイベントの泡立ちとキャプチャとは何ですか? DOMでのイベントの泡立ちとキャプチャとは何ですか? Jul 02, 2025 am 01:19 AM

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設(shè)定することにより実裝されます。 2。イベントバブルはデフォルトの動(dòng)作であり、UseCaptureはfalseに設(shè)定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動(dòng)的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

JavaScript:効率的なコーディングのためのデータ型の調(diào)査 JavaScript:効率的なコーディングのためのデータ型の調(diào)査 Jun 20, 2025 am 12:46 AM

javascripthassevenfundamentaldatypes:number、string、boolean、undefined、null、object、andsymbol.1)numberseadouble-precisionformat、有用であるため、有用性の高いものであるため、but-for-loating-pointarithmetic.2)ストリングリムムット、使用率が有用であること

JavaScriptアプリケーションのペイロードサイズをどのように削減できますか? JavaScriptアプリケーションのペイロードサイズをどのように削減できますか? Jun 26, 2025 am 12:54 AM

JavaScriptアプリケーションがゆっくりとロードされ、パフォーマンスが低い場(chǎng)合、問題はペイロードが大きすぎることです。ソリューションには、次のものが含まれます。1。コード分割(コードスプリッティング)を使用し、React.lazy()またはビルドツールを介して大きなバンドルを複數(shù)の小さなファイルに分割し、最初のダウンロードを減らすために必要に応じてロードします。 2。未使用のコード(Treeshaking)を削除し、ES6モジュールメカニズムを使用して「デッドコード」をクリアして、導(dǎo)入されたライブラリがこの機(jī)能をサポートしていることを確認(rèn)します。 3.リソースファイルを圧縮してマージし、GZIP/BrotliとTerserがJSを圧縮できるようにし、ファイルを合理的にマージし、靜的リソースを最適化します。 4.頑丈な依存関係を交換し、day.jsやフェッチなどの軽量ライブラリを選択します

See all articles