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

Heim Web-Frontend js-Tutorial So verwenden Sie das HTMLlt;dialog>-Element

So verwenden Sie das HTMLlt;dialog>-Element

Dec 27, 2024 pm 07:03 PM

In der Frontend-Entwicklung ist das Erstellen oder Verwenden vorgefertigter UI-Komponenten eine h?ufige Aufgabe. Diese Komponenten weisen jedoch h?ufig Einschr?nkungen auf. Sie sind typischerweise an bestimmte Frameworks gebunden und erfordern eine komplexe, nicht standardisierte Logik. Lange Zeit basierten grundlegende UI-Komponenten wie Dialogfenster auf benutzerdefinierten Implementierungen oder, in einfacheren F?llen, integrierten JavaScript-Methoden wie Alert(), Prompt() und Confirm().

Die gute Nachricht ist, dass Sie diese Komponente jetzt mit dem nativen

implementieren k?nnen. HTML-Element, das Teil des HTML5-Standards ist und von allen modernen Browsern vollst?ndig unterstützt wird.

Der

Das im Mai 2013 im Rahmen eines W3C-Arbeitsentwurfs eingeführte HTML-Tag wurde zusammen mit interaktiven Elementen wie
und um h?ufige UI-Herausforderungen anzugehen. wurde 2014 ver?ffentlicht. wurde zun?chst nur in Google Chrome und Opera unterstützt. Volle Unterstützung für in Firefox und Safari kam erst im M?rz 2022, was die Einführung in Produktionsprojekten verz?gerte. Mit über zwei Jahren Unterstützung durch die wichtigsten Browser ist der Das Element ist jetzt stabil genug, um das benutzerdefinierte
zu ersetzen

Lassen Sie uns die Funktionen von

erkunden. ausführlicher.

Kernaspekte der Nutzung

Der HTML-

-Tag erstellt ein standardm??ig ausgeblendetes Dialogfeld, das entweder als Popup oder als modales Fenster funktionieren kann.

Popups werden h?ufig verwendet, um einfache Benachrichtigungen anzuzeigen, wie z. B. Cookie-Meldungen, verschwindende Toast-Benachrichtigungen, Tooltips oder Kontextmenüelemente, die mit der rechten Maustaste angeklickt werden.

Modale Fenster helfen Benutzern, sich auf bestimmte Aufgaben zu konzentrieren, z. B. Benachrichtigungen und Warnungen, die eine Benutzerbest?tigung erfordern, komplexe interaktive Formulare und Leuchtk?sten für Bilder oder Videos.

Popups verhindern nicht die Interaktion mit der Seite, w?hrend modale Fenster das Dokument überlagern, den Hintergrund abdunkeln und andere Aktionen blockieren. Dieses Verhalten funktioniert ohne zus?tzliche Stile oder Skripte; Der einzige Unterschied besteht in der Methode zum ?ffnen des Dialogs.

Methoden zum ?ffnen von Dialogfenstern

– Popup:

<dialog>





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

popUpElement.show();

– modales Fenster:

<dialog>





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

modalElement.showModal();

In beiden F?llen ist das ?ffnen des Tag setzt sein open-Attribut auf true. Wenn Sie es direkt festlegen, wird das Dialogfeld als Popup und nicht als modales Fenster ge?ffnet. Zum Rendern modaler Fenster müssen Sie die entsprechende Methode verwenden. Zum Erstellen eines zun?chst ge?ffneten Popups ist kein JavaScript erforderlich.

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

Probieren Sie es aus:

  • ?ffnen eines Popups mit der .show()-Methode: https://codepen.io/alexgriss/pen/zYeMKJE
  • ?ffnen eines modalen Fensters mit der Methode .showModal(): https://codepen.io/alexgriss/pen/jOdQMeq
  • Direktes ?ndern des offenen Attributs: https://codepen.io/alexgriss/pen/wvNQzRB

Ans?tze zum Schlie?en des Dialogfensters

Dialogfenster schlie?en auf die gleiche Weise, unabh?ngig davon, wie sie ge?ffnet wurden. Hier sind einige M?glichkeiten, ein Popup- oder modales Fenster zu schlie?en:

– mit der .close()-Methode:

<dialog>





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

popUpElement.show();

– durch Ausl?sen des Submit-Ereignisses in einem Formular mit dem Attribut method="dialog":

<dialog>





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

modalElement.showModal();

– durch Drücken der Esc-Taste:

Das Schlie?en mit Esc funktioniert nur für modale Fenster. Es l?st zuerst das Abbruchereignis aus und schlie?t es dann, sodass Benutzer problemlos vor nicht gespeicherten ?nderungen in Formularen gewarnt werden k?nnen.

Probieren Sie es aus:

  • Schlie?en eines Dialogfelds mit der Close-Methode: https://codepen.io/alexgriss/pen/GRzwjaV
  • Schlie?en eines Dialogfelds über das Absendeformular: https://codepen.io/alexgriss/pen/jOdQVNV
  • Schlie?en eines modalen Fensters mit der Esc-Taste: https://codepen.io/alexgriss/pen/KKJrNKW
  • Verhindern, dass ein modales Fenster mit Esc geschlossen wird: https://codepen.io/alexgriss/pen/mdvQObN

Rückgabewert beim Schlie?en

Wenn Sie einen Dialog mit einem Formular schlie?en, das das Attribut method="dialog" verwendet, k?nnen Sie den Wert der Schaltfl?che ?Senden“ erfassen. Dies ist nützlich, wenn Sie basierend auf der angeklickten Schaltfl?che unterschiedliche Aktionen ausl?sen m?chten. Der Wert wird in der Eigenschaft returnValue gespeichert.

Probieren Sie es aus: https://codepen.io/alexgriss/pen/ZEwmBKx

Ein genauerer Blick darauf, wie es funktioniert

Lassen Sie uns tiefer in die Mechanik des Dialogfensters und die Details seiner Browser-Implementierung eintauchen.

Die Mechanik eines Popups

?ffnen eines als Popup mit .show() oder dem open-Attribut positioniert es automatisch mit position: absolute im DOM. Grundlegende CSS-Stile wie R?nder und Rahmen werden auf das Element angewendet, und das erste fokussierbare Element im Fenster erh?lt durch das Autofokus-Attribut automatisch den Fokus. Der Rest der Seite bleibt interaktiv.

Die Mechanik eines modalen Fensters

Ein modales Fenster ist komplexer gestaltet und funktioniert komplexer als ein Popup.

Dokumentüberlagerung

Beim ?ffnen eines modalen Fensters mit .showModal() wird der

Das Element wird in einer speziellen HTML-Ebene gerendert, die den gesamten sichtbaren Bereich der Seite abdeckt. Diese Ebene wird als oberste Ebene bezeichnet und vom Browser gesteuert. In einigen Browsern wie Google Chrome wird jedes Modal in einem separaten DOM-Knoten innerhalb dieser Ebene gerendert, der im Elementinspektor sichtbar ist.

How to Use the HTMLlt;dialog>Element

Das Konzept der Ebenen bezieht sich auf den Stapelkontext, der definiert, wie Elemente entlang der Z-Achse relativ zum Benutzer positioniert werden. Durch Festlegen eines Z-Index-Werts in CSS wird ein Stapelkontext für ein Element erstellt, in dem die Position seiner untergeordneten Elemente innerhalb dieses Kontexts berechnet wird. Modale Fenster stehen immer an der Spitze dieser Hierarchie, daher ist kein Z-Index erforderlich.

Erfahren Sie mehr über den Stacking-Kontext auf MDN.

Um mehr über die in der obersten Ebene gerenderten Elemente zu erfahren, besuchen Sie MDN.

Sperrung von Dokumenten

Wenn ein modales Element in der obersten Ebene gerendert wird, wird ein ::backdrop-Pseudoelement mit der gleichen Gr??e wie der sichtbare Dokumentbereich erstellt. Dieser Hintergrund verhindert die Interaktion mit dem Rest der Seite, auch wenn pointer-events: none CSS-Regel festgelegt ist.

Das Inert-Attribut wird automatisch für alle Elemente au?er dem modalen Fenster festgelegt und blockiert Benutzeraktionen. Es deaktiviert Klick- und Fokusereignisse und macht die Elemente für Bildschirmleseger?te und andere unterstützende Technologien unzug?nglich.

Erfahren Sie mehr über das inerte Attribut auf MDN.

Fokusverhalten

Wenn das Modal ge?ffnet wird, erh?lt das erste fokussierbare Element darin automatisch den Fokus. Um das ursprünglich fokussierte Element zu ?ndern, k?nnen Sie die Attribute autofocus oder tabindex verwenden. Das Festlegen von tabindex für das Dialogelement selbst ist nicht m?glich, da es das einzige Element auf der Seite ist, bei dem keine inerte Logik gilt.

Nachdem der Dialog geschlossen wurde, kehrt der Fokus zu dem Element zurück, das ihn ge?ffnet hat.

L?sen von UX-Problemen mit modalen Fenstern

Leider ist die native Implementierung des

Das Element deckt nicht alle Aspekte der Interaktion mit modalen Fenstern ab. Als N?chstes m?chte ich auf die wichtigsten UX-Probleme eingehen, die bei der Verwendung modaler Fenster auftreten k?nnen, und auf deren L?sung.

Scroll-Blockierung

Auch wenn das native modale HTML5-Fenster ein ::backdrop-Pseudoelement erstellt, das die Interaktion mit dem darunter liegenden Inhalt blockiert, ist der Seitenscroll weiterhin aktiv. Dies kann für Benutzer ablenkend sein, daher wird empfohlen, den Inhalt des Textk?rpers abzuschneiden, wenn das Modal ge?ffnet wird:

<dialog>





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

popUpElement.show();

Eine solche CSS-Regel muss jedes Mal dynamisch hinzugefügt und entfernt werden, wenn das modale Fenster ge?ffnet und geschlossen wird. Dies kann durch Bearbeiten einer Klasse erreicht werden, die diese CSS-Regel enth?lt:

<dialog>





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

modalElement.showModal();

Sie k?nnen auch den :has-Selektor verwenden, wenn sein Supportstatus den Anforderungen des Projekts entspricht.

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

Probieren Sie es aus: https://codepen.io/alexgriss/pen/XWOyVKj

Schlie?en des Dialogs durch Klicken au?erhalb des Fensters

Dies ist ein Standard-UX-Szenario für ein modales Fenster und kann auf verschiedene Arten implementiert werden. Hier sind zwei M?glichkeiten, dieses Problem zu l?sen:

Eine Methode, die auf dem Verhalten des Pseudoelements ::backdrop basiert

Ein Klick auf das Pseudoelement ::backdrop gilt als Klick auf das Dialogelement selbst. Wenn Sie daher den gesamten Inhalt des modalen Fensters in ein zus?tzliches

und dann das Dialogelement selbst abdecken, k?nnen Sie bestimmen, wohin der Klick gerichtet war – auf den Hintergrund oder auf den modalen Fensterinhalt.

Vergessen Sie nicht, die standardm??igen Abstands- und Rahmenstile des Browsers für den

zurückzusetzen. Element, um zu verhindern, dass das modale Fenster bei versehentlichen Klicks geschlossen wird:

<dialog>





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

popUpElement.show();

Jetzt wenden wir die allgemeinen Stile für die Rahmen und R?nder des modalen Fensters nur auf den inneren Wrapper an.

Wir müssen eine Funktion schreiben, die das modale Fenster nur schlie?t, wenn auf den Hintergrund geklickt wird, nicht auf das innere Wrapper-Element:

<dialog>





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

modalElement.showModal();

Probieren Sie es aus: https://codepen.io/alexgriss/pen/mdvQXpJ

Eine Methode, die auf der Bestimmung der Gr??e des Dialogfensters basiert

Diese Methode unterscheidet sich von der ersten, die einen zus?tzlichen Wrapper für den modalen Inhalt ben?tigte. Hier ben?tigen Sie keine zus?tzliche Verpackung. Sie müssen lediglich überprüfen, ob die Position des Cursors beim Klicken den Bereich des Elements verl?sst:

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

Probieren Sie es aus: https://codepen.io/alexgriss/pen/NWoePVP

Gestalten des Dialogfensters

Der

Das Element ist hinsichtlich des Stils flexibler als viele native HTML-Elemente. Hier sind einige Beispiele für den Stil von Dialogfenstern:

Den Hintergrund mit dem ::backdrop-Selektor gestalten: https://codepen.io/alexgriss/pen/ExrOQEO

Animiertes Dialogfenster zum ?ffnen und Schlie?en: https://codepen.io/alexgriss/pen/QWYJQJO

Modalfenster als Seitenleiste: https://codepen.io/alexgriss/pen/GRzwxgr

Zug?nglichkeit

Lange Zeit war der

Element hatte einige Probleme mit der Barrierefreiheit, aber jetzt funktioniert es gut mit wichtigen Hilfstechnologien wie Bildschirmleseprogrammen (VoiceOver, TalkBack, NVDA).

Wenn ein

Beim ?ffnen wird der Fokus vom Screenreader auf den Dialog verschoben. Bei modalen Fenstern bleibt der Fokus im Dialog, bis er geschlossen wird.

Standardm??ig ist der

Das Element wird von unterstützenden Technologien als mit dem ARIA-Attribut ?role="dialog" versehen erkannt. Ein modaler Dialog wird als mit dem ARIA-Attribut aria-modal="true" versehen erkannt.

Hier finden Sie einige M?glichkeiten, die Barrierefreiheit des

zu verbessern. Element:

aria-labelledby

Fügen Sie immer einen Titel in Dialogfenster ein und geben Sie das aria-labelledby-Attribut für das

an. Element, wobei der Wert auf die ID des Titels gesetzt ist.

<dialog>





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

popUpElement.show();

Wenn Sie das Pseudoelement ::backdrop formatieren müssen, stellen Sie sicher, dass Sie diese Stile auch auf das entsprechende .backdrop-Element anwenden, um die Kompatibilit?t mit ?lteren Browsern sicherzustellen:

<dialog>





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

modalElement.showModal();

Es wird empfohlen, das Polyfill über einen dynamischen Import zu verbinden und nur für Browser, die das

nicht unterstützen. Element:

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

Abschluss

Das native HTML5

Element ist ein relativ einfaches, aber leistungsstarkes Tool zum Implementieren modaler Fenster und Popups. Es wird von modernen Browsern gut unterstützt und kann erfolgreich in Projekten verwendet werden, die sowohl auf Vanilla JS als auch jedem Frontend-Framework basieren.

In diesem Artikel haben wir die folgenden Themen besprochen:

  • Probleme im Element l?st;
  • Interaktion mit dem Element-API;
  • Wie Dialogfenster auf Browserebene funktionieren;
  • H?ufige Probleme mit Modalit?ten und ihre L?sungen;
  • Verbesserung der Zug?nglichkeit des Element für unterstützende Technologien wie Bildschirmleseger?te;
  • Erweiterung der Browserunterstützung für Element.

Abschlie?end lade ich Sie ein, sich die Implementierung der modalen Fensterkomponente in reinem JS anzusehen, die die im Artikel besprochenen Hauptaspekte berücksichtigt: https://codepen.io/alexgriss/pen/abXPOPP

Das ist alles, was ich über die Arbeit mit dem

mitteilen wollte. HTML-Element. Ich hoffe, dieser Artikel inspiriert Sie zum Experimentieren!

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das HTMLlt;dialog>-Element. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Java vs. JavaScript: Die Verwirrung beseitigen Java vs. JavaScript: Die Verwirrung beseitigen Jun 20, 2025 am 12:27 AM

Java und JavaScript sind unterschiedliche Programmiersprachen, die jeweils für verschiedene Anwendungsszenarien geeignet sind. Java wird für die Entwicklung gro?er Unternehmen und mobiler Anwendungen verwendet, w?hrend JavaScript haupts?chlich für die Entwicklung von Webseiten verwendet wird.

JavaScript -Kommentare: Kurzer Erl?uterung JavaScript -Kommentare: Kurzer Erl?uterung Jun 19, 2025 am 12:40 AM

JavaScriptComents AreseessentialFormaintaining, Lesen und GuidingCodeexexecution.1) einzelne Linecommments Arequickickexplanationen.2) Multi-LindexplainComproxlogicorProvedetailedDocumentation.3) InlinecommentsclarifyspecificPartsosensofCode.BestPracticic

Wie arbeite man mit Daten und Zeiten in JS? Wie arbeite man mit Daten und Zeiten in JS? Jul 01, 2025 am 01:27 AM

Die folgenden Punkte sollten bei der Verarbeitung von Daten und Zeiten in JavaScript festgestellt werden: 1. Es gibt viele M?glichkeiten, Datumsobjekte zu erstellen. Es wird empfohlen, ISO -Format -Zeichenfolgen zu verwenden, um die Kompatibilit?t sicherzustellen. 2. Die Zeitinformationen erhalten und festlegen k?nnen und setzen Sie Methoden fest, und beachten Sie, dass der Monat mit 0 beginnt. 3. Die manuell formatierende Daten sind Zeichenfolgen erforderlich, und auch Bibliotheken von Drittanbietern k?nnen verwendet werden. 4. Es wird empfohlen, Bibliotheken zu verwenden, die Zeitzonen wie Luxon unterstützen. Das Beherrschen dieser wichtigen Punkte kann h?ufige Fehler effektiv vermeiden.

Warum sollten Sie  Tags am Ende des  platzieren? Warum sollten Sie Tags am Ende des platzieren? Jul 02, 2025 am 01:22 AM

PlatztagsattheBottomofabogpostorwebpageServeSpracticalPurposesforseo, Usexperience und design.1ithelpswithseobyallowingEnginestoaccessKeyword-relevantTagswithoutClutteringHemainContent.2.

JavaScript vs. Java: Ein umfassender Vergleich für Entwickler JavaScript vs. Java: Ein umfassender Vergleich für Entwickler Jun 20, 2025 am 12:21 AM

JavaScriptispreferredforwebdevelopment,whileJavaisbetterforlarge-scalebackendsystemsandAndroidapps.1)JavaScriptexcelsincreatinginteractivewebexperienceswithitsdynamicnatureandDOMmanipulation.2)Javaoffersstrongtypingandobject-orientedfeatures,idealfor

JavaScript: Datentypen zur effizienten Codierung untersuchen JavaScript: Datentypen zur effizienten Codierung untersuchen Jun 20, 2025 am 12:46 AM

JavaScripthassevenfundamentaldatatypes:number,string,boolean,undefined,null,object,andsymbol.1)Numbersuseadouble-precisionformat,usefulforwidevaluerangesbutbecautiouswithfloating-pointarithmetic.2)Stringsareimmutable,useefficientconcatenationmethodsf

Was sprudelt und f?ngt Ereignis im Dom? Was sprudelt und f?ngt Ereignis im Dom? Jul 02, 2025 am 01:19 AM

Ereigniserfassung und Blase sind zwei Phasen der Ereignisausbreitung in DOM. Die Erfassung erfolgt von der oberen Schicht bis zum Zielelement, und die Blase ist vom Zielelement bis zur oberen Schicht. 1. Die Ereigniserfassung wird implementiert, indem der UseCapture -Parameter von AddEventListener auf true festgelegt wird. 2. Ereignisblase ist das Standardverhalten, Uscapture ist auf false oder weggelassen. 3. Die Ereignisausbreitung kann verwendet werden, um die Ereignisausbreitung zu verhindern. 4. Event Bubbling unterstützt die Ereignisdelegation, um die Effizienz der dynamischen Inhaltsverarbeitung zu verbessern. 5. Capture kann verwendet werden, um Ereignisse im Voraus abzufangen, wie z. B. Protokollierung oder Fehlerverarbeitung. Das Verst?ndnis dieser beiden Phasen hilft dabei, das Timing und die Reaktion von JavaScript auf Benutzeroperationen genau zu steuern.

Wie k?nnen Sie die Nutzlastgr??e einer JavaScript -Anwendung reduzieren? Wie k?nnen Sie die Nutzlastgr??e einer JavaScript -Anwendung reduzieren? Jun 26, 2025 am 12:54 AM

Wenn JavaScript -Anwendungen langsam geladen werden und eine schlechte Leistung haben, ist das Problem, dass die Nutzlast zu gro? ist. Zu den L?sungen geh?ren: 1. Verwenden Sie die Codespaltung (codessplitting), teilen Sie das gro?e Bündel über React.lazy () in mehrere kleine Dateien auf und laden Sie es nach Bedarf, um den ersten Download zu reduzieren. 2. Entfernen Sie den unbenutzten Code (Treeshaker), verwenden Sie den ES6 -Modulmechanismus, um "toten Code" zu l?schen, um sicherzustellen, dass die eingeführten Bibliotheken diese Funktion unterstützen. 3.. Ressourcendateien komprimieren und verschmelzen, GZIP/Brotli und Terser aktivieren, JS zu komprimieren, Dateien vernünftig zusammenzufassen und statische Ressourcen zu optimieren. V.

See all articles