De nos jours, de nombreux processus sur le Web requièrent le plein consentement des utilisateurs pour être terminés. Par exemple, les utilisateurs peuvent avoir besoin de supprimer un compte, de changer leur nom d'utilisateur ou de confirmer une transaction monétaire..
Une approche UX commune dans de tels cas consiste à afficher une boîte de dialogue, généralement avec deux boutons; un pour annuler et un pour poursuivre l'action. Nous comptons sur les bibliothèques JavaScript pour le faire depuis des années. Cependant, dans ce tutoriel, nous allons faire les choses de manière native avec le logiciel expérimental. élément.
Les navigateurs compatibles (Chrome 37+ et Opera 27+) afficheront le Il est à noter que le le Dans la plupart des cas, il est probable que nous utiliserions la commodité de La boîte de dialogue contient le style par défaut des navigateurs, qui peut être facilement remplacé comme la plupart des autres éléments. Vous pouvez, par exemple, amincir la bordure de la boîte de dialogue, arrondir les coins et ajouter une ombre portée. En outre, lorsque le Il est courant de styliser le fond avec une opacité faible, cliquez sur le bouton rouge pour le voir en action: La personnalisation des styles de boîte de dialogue devrait être simple, mais qu'en est-il de l'ajout d'une transition CSS? Que diriez-vous de révéler progressivement la boîte de dialogue, en utilisant un effet de redimensionnement, plus ou moins comment OS X le fait? Pour commencer, réduisons le dialogue de 90%, spécifions la transition et le masquons. Maintenant, nous définissons un sélecteur de classe qui redimensionnera la boîte de dialogue à la taille voulue et la rendra visible.. Notre astuce maintenant est que nous allons «maintenir» la boîte de dialogue à sa petite échelle pendant quelques millisecondes avant d’ajouter la classe. N'oublions pas de supprimer cette classe et d'effacer le délai d'attente lorsque la boîte de dialogue est fermée. Nous sommes tous ensemble! Vous pouvez faire un tour dans la démo suivante: le Jusque-là, vous pouvez utiliser le polyfill de Google Chrome pour le simuler dans des navigateurs non compatibles.. est un élément HTML5 (5.1 pour être exact). Il est classé comme une "racine de sectionnement", similaire à la
,
, et le
éléments, chacun établissant une nouvelle section de contenu de manière indépendante. Vous pouvez le placer en tant qu’enfant du corps ou l’intégrer dans un élément comme un -les deux approches sont valables.
élément masqué par défaut, le rendant uniquement visible sur demande avec JavaScript en utilisant
spectacle()
ou showModal ()
, et le Fermer()
méthode pour le cacher à nouveau. Habituellement, nous exécutons cette méthode dans un Cliquez sur
événement, comme si:var $ accountDelete = $ ('# # delete-account'), $ accountDeleteDialog = $ ('# confirm-delete-' '); $ accountDelete.on ('cliquez', fonction () $ accountDeleteDialog [0] .showModal ();); $ ('# cancel'). on ('cliquez', fonction () $ accountDeleteDialog [0] .close (););
le
spectacle()
v. showModal ()
Méthodespectacle()
et showModal ()
se comporter différemment.spectacle()
méthode révèle l'élément en fonction de sa position dans le flux DOM. Si vous l'avez ajouté juste avant la balise de fermeture du corps, il est possible qu'il apparaisse au bas de la page Web. Nous devrions ajouter des styles personnalisés pour ajuster sa position, par exemple si nous voulons le placer au centre de la page. Ces styles utiliseraient généralement z-index
d'empiler l'élément au-dessus des autres éléments, le position
propriété définie sur absolu
, de même que la gauche
et Haut
.showModal ()
La méthode, d’autre part, affichera l’élément sous forme de modal. Il sera affiché au centre de la page par défaut et il se situera dans la couche supérieure, comme l’API fullScreen, qui empêche les interférences de z-index
, position relative et débordement de l'élément parent.showModal ()
à la place du spectacle()
méthode.Personnaliser les styles
l’élément est montré sous forme de modal (en utilisant le
showModal ()
méthode), nous avons un pseudo-élément supplémentaire, :: toile de fond
, à notre disposition. le :: toile de fond
L’élément est situé immédiatement sous la boîte de dialogue, couvrant l’ensemble de la fenêtre et le reste des éléments situés en dessous..Ajouter un style avec des transitions
Étape 1
dialogue visibilité: masqué; transformer: échelle (0,1); transition: transformer 200ms;
Étape 2
dialog.dialog-scale visibilité: visible; transformer: échelle (1);
Étape 3
échelle de dialogue
. Pour ce faire, nous utilisons JavaScript setTimeout ()
méthode pour ajouter la classe:transition var; $ accountDelete.on ('click', function () $ accountDeleteDialog [0] .showModal (); transition = setTimeout (function () $ accountDeleteDialog.addClass ('dialog-scale');, 0.5);) ;
Étape 4
$ ('# cancel'). on ('click', function () $ accountDeleteDialog [0] .close (); $ accountDeleteDialog.removeClass ('dialog-scale'); clearTimeout (transition););
Emballer
est vraiment pratique, mais toujours très médiocre en ce qui concerne la prise en charge du navigateur. Si et lorsque tous les principaux navigateurs l'ont mis en œuvre, nous compterons moins sur les bibliothèques, notre structure de contenu sera plus sémantique, correctement accessible pour les technologies d'assistance et nous disposerons d'un moyen standard de fournir des dialogues modaux..
Ressources supplémentaires