Veel processen op het web vereisen tegenwoordig volledige instemming van gebruikers om te worden voltooid. Gebruikers moeten bijvoorbeeld mogelijk een account verwijderen, hun gebruikersnaam wijzigen of een geldtransactie bevestigen.
Een gebruikelijke UX-aanpak is in dergelijke gevallen om een dialoogvenster weer te geven, meestal met twee knoppen; één voor annuleren en één voor doorgaan met de actie. We vertrouwen al jaren op JavaScript-bibliotheken om dit te doen, maar in deze tutorial gaan we dingen doen met het experimentele element.
Ondersteunende browsers (Chrome 37+ en Opera 27+) zullen het Het is vermeldenswaard dat De De In de meeste gevallen is het waarschijnlijk dat we het gemak van Het dialoogvenster bevat de standaardstijl van de browser, die eenvoudig kan worden overschreven zoals de meeste andere elementen. U kunt het dialoogvenster bijvoorbeeld dunner maken, de hoeken afgerond maken en slagschaduw toevoegen. Bovendien, wanneer het Het is gebruikelijk om de achtergrond op te maken met een donkere kleur met lage dekking. Klik op de rode knop om deze in actie te zien: Het aanpassen van de dialoogvensterstijlen moet eenvoudig zijn, maar hoe zit het met het toevoegen van CSS-overgangen? Hoe zit het met het geleidelijk onthullen van het dialoogvenster, met behulp van een schaaleffect, min of meer hoe OS X het doet? Om te beginnen zullen we de dialoog met 90% verkleinen, de overgang specificeren en uit het zicht plaatsen. Nu definiëren we een klassenkiezer die het dialoogvenster schaalt tot de beoogde grootte en zichtbaar maakt. Onze truc is nu dat we het dialoogvenster op kleine schaal een paar milliseconden "vasthouden" voordat we de klasse toevoegen Laten we niet vergeten om deze klasse te verwijderen en de timeOut te wissen wanneer het dialoogvenster gesloten is. We zijn er allemaal klaar voor! Je kunt het een ritje geven in de volgende demo: De Tot die tijd kunt u de polyfill van Google Chrome gebruiken om het te simuleren in niet-ondersteunende browsers. is een HTML5 (5.1 om precies te zijn) element. Het is geclassificeerd als een "scheidingswortel", vergelijkbaar met de
,
, en de
elementen, die elk onafhankelijk een nieuwe inhoudssectie vormen. Je kunt het plaatsen als een kind van het lichaam, of nestelen in een element als een -beide benaderingen zijn geldig.
element is standaard verborgen, waardoor het alleen op verzoek zichtbaar is met gebruik van JavaScript
laten zien()
of showModal ()
, en de dichtbij()
methode om het opnieuw te verbergen. Meestal zouden we deze methode uitvoeren binnen een Klik
evenement, zoals zo:var $ accountDelete = $ ('# delete-account'), $ accountDeleteDialog = $ ('# confirm-delete'); $ accountDelete.on ('klik', functie () $ accountDeleteDialog [0] .showModal ();); $ ('# cancel'). on ('klik', functie () $ accountDeleteDialog [0] .close (););
De
laten zien()
v. showModal ()
Methodelaten zien()
en showModal ()
zich anders gedragen.laten zien()
methode onthult het element in overeenstemming met zijn positie in de DOM-stroom. Als u het vlak voor de body closing-tag hebt toegevoegd, kan dit onderaan de webpagina worden weergegeven. We zouden aangepaste stijlen moeten toevoegen om de positie aan te passen, bijvoorbeeld als we deze op de pagina gecentreerd willen plaatsen. Deze stijlen zouden meestal worden gebruikt z-index
om het element op de andere elementen te stapelen, de positie
eigenschap ingesteld op absoluut
, samen met links
en top
.showModal ()
methode, daarentegen, zal het element weergeven als een modaal. Het wordt standaard in het midden van de pagina weergegeven en bevindt zich in de bovenste laag, zoals de fullScreen API die interferentie door z-index
, relatieve positie en overloop van het ouderelement.showModal ()
in plaats van de laten zien()
methode.Stijlen aanpassen
element wordt weergegeven als een modaal (met behulp van de
showModal ()
methode), hebben we een extra pseudo-element, :: backdrop
, tot onze beschikking. De :: backdrop
element bevindt zich onmiddellijk onder het dialoogvenster, dat de hele viewport en de rest van de elementen eronder bedekt.Flair toevoegen met overgangen
Stap 1
dialoogvenster visibility: hidden; transformatie: schaal (0.1); overgang: transformeer 200ms;
Stap 2
dialog.dialog-scale visibility: visible; transformeren: schaal (1);
Stap 3
dialog-schaal
. Om dit te bereiken gebruiken we JavaScript's setTimeout ()
methode om de klasse toe te voegen:var overgang; $ accountDelete.on ('klik', functie () $ accountDeleteDialog [0] .showModal (); transition = setTimeout (function () $ accountDeleteDialog.addClass ('dialog-scale');, 0.5);) ;
Stap 4
$ ('# cancel'). on ('klik', functie () $ accountDeleteDialog [0] .close (); $ accountDeleteDialog.removeClass ('dialog-scale'); clearTimeout (transition););
Afsluiten
is werkelijk handig, maar nog steeds erg slecht met betrekking tot browserondersteuning. Als en wanneer alle grote browsers het hebben geïmplementeerd, zullen we minder afhankelijk zijn van bibliotheken, onze inhoudsstructuur zal meer semantisch zijn, goed toegankelijk voor ondersteunende technologie, en we zullen een standaardmanier hebben voor het leveren van modale dialogen.
Verdere bronnen