Donnez aux utilisateurs le contrôle avec les boutons de confirmation de confirmation

Ce tutoriel vous apprendra comment créer une page Web adaptative avec des boutons prenant différents états en fonction de l'interaction de l'utilisateur. Ce type d'interaction est particulièrement utile sur des liens tels que "achat" ou "suppression" lorsqu'il est sage de confirmer que l'utilisateur souhaite effectivement prendre une mesure spécifique..

Cette interaction est celle que beaucoup connaissent; vous pouvez constater un effet similaire dans l'App Store d'Apple lors de l'achat d'applications.


Toutes mes excuses pour les Français, vous avez l'idée…

La page que nous créons dans ce tutoriel fonctionnera également sur les appareils mobiles, car il s'agit d'un design réactif..


introduction

Nous allons créer un exemple de page basée sur le réseau Tuts +. Cette page comportera des boutons de confirmation. Bien que l'exemple utilise des boutons de confirmation "rejoindre maintenant", vous pouvez éventuellement utiliser ce style d'interaction partout où vous avez besoin d'un utilisateur pour confirmer l'action qu'il est sur le point d'effectuer..

Quand et pourquoi choisir cette interaction

Une bonne interface utilisateur donne aux utilisateurs un sens compréhensible du pouvoir qui les aide constamment à se sentir en contrôle.

Un aspect important de l’interaction homme-machine est de donner à l’utilisateur un sentiment de contrôle. Lorsque les utilisateurs ont le contrôle, ils se sentent à l'aise. Quand ils ne contrôlent pas, ils sont frustrés. Mais quand on y pense, les humains sont toujours en contrôle. Les ordinateurs ne font jamais rien sans que vous leur ayez d'abord demandé.

C’est là que l’importance d’un bon logiciel et d’une bonne conception de l’interface utilisateur entre en scène. Une bonne interface utilisateur donne aux utilisateurs un sens compréhensible du pouvoir qui les aide constamment à se sentir en contrôle. Ils ne demanderont jamais "attendez, pourquoi est-ce arrivé?" ou "attend comment je suis arrivé ici?"

Vous pouvez transmettre un sentiment de contrôle à l'utilisateur en lui communiquant des informations à chaque interaction. Aidez-les à comprendre les causes et les effets dans le système. Pour utiliser un exemple de base, si vous enregistrez quelque chose, le système vous enverra un message positif indiquant que "vos paramètres ont été enregistrés". Ainsi, les utilisateurs ne se poseront jamais de question "Je me demande si cela a été enregistré?"

Qu'est-ce que cela a à voir avec le tutoriel?

L'interaction que nous allons créer dans ce didacticiel aide l'utilisateur à se sentir plus en contrôle. En modifiant l'état du bouton et en demandant à l'utilisateur de confirmer sa décision d'achat, nous nous assurons qu'il ne fait jamais rien par inadvertance. Ceci est particulièrement utile lorsque vous demandez aux utilisateurs de se séparer de leur argent durement gagné. la dernière chose que quelqu'un veut est de payer accidentellement pour quelque chose!

La beauté de cette interaction réside dans le fait que, plutôt que de recevoir une invite contextuelle disant «Êtes-vous sûr de vouloir acheter?», Les utilisateurs sont informés par le bouton de changement d'état qu'ils sont sur le point de faire quelque chose d'important. S'ils ne veulent pas le faire, ils peuvent simplement continuer à naviguer sur le site; alors qu'un message d'alerte obligerait explicitement l'utilisateur à prendre une décision par oui ou par non.

Avant de commencer

Assurez-vous de saisir les dépendances du fichier image pour ce tutoriel. Placez-les dans un dossier nommé "images". Tous vos autres fichiers (HTML, CSS, JavaScript) seront placés dans le répertoire principal. A la fin du tutoriel, la structure de votre fichier ressemblera à ceci:


Étape 1: Débuter avec HTML

Commençons par créer du code HTML de base qui définira la structure de notre page..

    Styles des boutons de confirmation   

Nous avons donc ici notre structure de base de page HTML5. Nous avons inclus notre DOCTYPE, le titre de notre page et un

élément avec un ID de #récipient


Étape 2: Lien vers les dépendances

Ajoutons maintenant les liens aux dépendances du balisage.

Nous allons d’abord ajouter un lien vers notre feuille de style CSS (que nous allons créer prochainement). Cela va dans le élément.

 

Nous allons ensuite inclure un lien vers la version hébergée de Google de jQuery, ainsi qu'un lien vers "script.js", qui contiendra le code javascript que nous aurons créé ultérieurement. Mettons cela juste avant la fermeture étiquette.

   

Parce que nous allons utiliser des éléments HTML5 comme et

nous aurons besoin d'ajouter HTML5 shiv pour que notre balisage fonctionne dans IE8. Incluez ceci dans votre entête:

 

Étape 3: Conception flexible

Nous allons concevoir cette page pour qu'elle soit réactive et flexible, jusqu'au mobile. Pour que les navigateurs mobiles rendent notre page correctement, nous devrons définir la propriété méta viewport. Pour en savoir plus à ce sujet, consultez l'article de Ian Yates sur la balise méta de la fenêtre d'affichage. Sinon, ajoutez simplement cet extrait de code dans votre élément.

 

Étape 4: Création du marquage d'en-tête

Commençons par ajouter un en-tête de page à notre document.

  

La meilleure façon d’acquérir des compétences créatives et techniques telles que la conception, le développement, etc.!

Notre en-tête (de différentes tailles) est assez basique et ressemble à ceci:


Étape 5: Création du balisage de liste

Maintenant, nous allons créer une liste non ordonnée sous notre élément. Nous allons utiliser cela pour envelopper nos articles énumérés dans.

La liste non ordonnée

 

Comme vous pouvez le constater, nous avons donné à notre liste non ordonnée une classe de 'liste' que nous utiliserons pour cibler ses styles avec CSS.

La structure des éléments de la liste:

 
  • Comme vous pouvez le voir, à l'intérieur de chaque

  • , nous avons deux éléments principaux; une
    et un
    . L'élément figure est parfaitement adapté pour accueillir l'icône de notre élément de liste. La div avec une classe de 'info' est l'endroit où nous mettons les informations associées à l'icône. Encore une fois, tout cela est contenu dans un
  • élément.

    L'icône

    À l'intérieur de

    nous allons mettre l'icône de l'article en utilisant le étiquette. La largeur de l'élément figure sera contrôlée. Ensuite, en indiquant que l'image doit avoir une largeur maximale égale à la figure, elle sera redimensionnée en fonction de l'élément parent!

     

    L'info

    À l'intérieur de

    nous allons avoir trois éléments:

    1. En-tête de l'élément (à l'aide de la

      élément)

    2. Le bouton d'action (en utilisant le élément)
    3. La description de l'article (en utilisant le

      élément)

    Nous allons donner notre bouton (le élément) une classe de "rejoindre" pour le style CSS plus tard.

     

    Activetuts+

    15,99 $

    Lorem ipsum dolor sit amet, consectetur elit adipisicing, incididunt temporal lab labore et dolore magna aliqua.

    Code final pour chaque
  • élément
  •  
  • Activetuts+

    15,99 $

    Lorem ipsum dolor sit amet, consectetur elit adipisicing, incididunt temporal lab labore et dolore magna aliqua.

  • Voici ce que nous avons jusqu'à présent:


    Étape 6: duplication et modification de chaque
  • Élément
  • Maintenant que nous avons la structure de base pour chaque

  • élément, tout ce que nous avons à faire est de le dupliquer pour chaque entrée Tuts +. Nous devons modifier les éléments suivants pour chaque élément de la liste:

    1. le

      texte

    2. le lien
    3. le nom de fichier

    Vous pouvez continuer et copier / coller le code de l’élément de la liste pour chaque site Tuts +.

    Voici ce que nous avons maintenant:


    Étape 7: CSS de base

    Maintenant que tout notre balisage est terminé, commençons à styliser la page. Nous allons commencer par définir quelques réinitialisations de base:

     / * réinitialisation rapide * / body, h1, h2, p, ul, li marge: 0; rembourrage: 0;  ul list-style-type: none;

    Maintenant, appelons le principal corps élément.

     body background: #eee; police: 16px / 1.4em Helvetica, Arial, sans serif; couleur: # 333; 

    Ici, nous définissons la couleur d'arrière-plan et certaines valeurs par défaut pour notre typographie, telles que la taille, la couleur et la hauteur de ligne..


    Étape 7: Aller réactif (liquide)

    Nous voulons que notre page soit flexible jusqu'au mobile. Ainsi, les deux composants clés que nous utiliserons pour y parvenir sont les pourcentages et la largeur maximale règle.

    En regardant notre code HTML, vous verrez

    est le conteneur principal pour le contenu de notre page. Nous allons utiliser des valeurs en pourcentage pour la largeur et ajouter un style de base pour les séparer visuellement du fond de la page..

     #container width: 100%; marge: 0 auto 40 px; largeur maximale: 600px; background: #fff; border-radius: 0 0 3px 3px; bordure: 1px solide # d0d0d0; bordure supérieure: 0; box-shadow: 0 1px 0px #fff; 

    Ici, nous définissons la largeur de notre conteneur sur 100% de la fenêtre de visualisation du navigateur. Nos marges centrent le contenu sur la page. Nous avons également ajouté largeur maximale: 600px parce que nous ne voulons pas que nos éléments de liste soient plus grands que cela.

    Comme vous pouvez le constater, nos conteneurs de plus grandes tailles offrent un espace supplémentaire sur les côtés avec un fond clair. Mais pour les petites tailles, cet espace supplémentaire disparaît et nous avons juste un fond blanc pour notre contenu.

    N'oublions pas de rendre nos images réactives:

     img max-width: 100%; 

    Étape 8: Styles d'en-tête

    Maintenant, appelons notre principale élément et contenu à l'intérieur.

     en-tête text-align: center; rembourrage: 30px 20px;  en-tête h1 margin-bottom: 20px;  en-tête p color: # 413c38; taille de police: 1.2em; hauteur de ligne: 1.4em; 

    Notre en-tête et son contenu sont maintenant bien centrés et dimensionnés.


    Étape 9: Styles d'éléments de liste structurels

    Nous allons maintenant commencer à styler nos éléments de liste et leurs frères et soeurs. Commençons par créer des styles structurels de base:

     .icône, .info box-sizing: border-box;  .icon float: left; largeur: 15%; text-align: right; rembourrage à gauche: 3%;  .info width: 85%; float: gauche; rembourrage: 0 5%; 

    Si vous vous en souvenez bien, chaque élément de la liste contient deux éléments principaux: "icon" et "info". La figure d'icône sera flottée à gauche et aura une petite largeur. Le div 'info' sera placé à droite et à la majorité de la largeur du parent.

    Comme vous pouvez le voir, nous avons utilisé le taille de la boîte: boîte-frontière; statuer sur ces deux divs. Cela nous permet d’avoir une largeur totale de 100% et de pouvoir ajouter du rembourrage sans dépasser une largeur totale de 100% (pour en savoir plus sur cette propriété, lisez Encourager les éléments de formulaire réactifs à bien jouer).


    Étape 10: Lister les styles d'élément

    Après nos ajouts CSS structurels, nous avons maintenant quelque chose qui ressemble à ceci:

    Comme vous pouvez le constater, cela doit être un peu nettoyé. Premièrement, parce que nous lançons nos éléments "info" et "icône", nous devons ajouter un élément clair à chacun des éléments de la liste. Nous allons également ajouter un peu de style à chaque élément de la liste.

     .list li padding: 20px 0; border-top: 1px solid #eee; débordement: auto; clarifier les deux;  .list li: survoler background: # f7f7f7; 

    Enfin, nous allons styliser les informations à l'intérieur de chaque élément de la liste:

     .info h2 margin-bottom: 10px; taille de police: 1.75em; hauteur de ligne: 1em; affichage: inline-block;  .info p font-size: 14px; couleur: # 777; 

    Maintenant, nous avons quelque chose qui commence à paraître assez solide.


    Étape 11: Styles de boutons

    Appliquons maintenant quelques styles à nos boutons. Nous allons les rendre visuellement importants:

     une text-decoration: none; couleur: #fff;  .join background: # 57a9eb; / * Anciens navigateurs * / arrière-plan: -moz-linear-gradient (en haut, rgba (87,169,235,1) 0%, rgba (53,156,234,1) 100%); / * FF3.6 + * / background: -webkit-gradient (linéaire, gauche en haut, gauche en bas, couleur-stop (0%, rgba (87,169,235,1)), couleur-stop (100%, rgba (53,156,234,1 ))); / * Chrome, Safari4 + * / arrière-plan: -webkit-linear-gradient (en haut, rgba (87,169,235,1) 0%, rgba (53,156,234,1) 100%); / * Chrome10 +, Safari5.1 + * / arrière-plan: -o-linear-gradient (en haut, rgba (87,169,235,1) 0%, rgba (53,156,234,1) 100%); / * Opera 11.10+ * / background: -ms-linear-gradient (haut, rgba (87,169,235,1) 0%, rgba (53,156,234,1) 100%); / * IE10 + * / arrière-plan: gradient linéaire (haut, rgba (87,169,235,1) 0%, rgba (53,156,234,1) 100%); / * W3C * / filter: progid: DXImageTransform.Microsoft.gradient (startColorstr = "# 57a9eb", endColorstr = "# 359cea", GradientType = 0); / * IE6-9 * / border: 1px solid # 326fa9; border-top-color: # 3e80b1; border-bottom-color: # 1e549d; couleur: #fff; poids de police: gras; text-transform: majuscule; text-shadow: 0 -1px 0 # 1e3c5e; taille de police: 11px; border-radius: 5px; box-shadow: 0 1px 0 #bbb, 0 1px 0 # 9cccf3 inset; espace blanc: maintenant; -webkit-transition: toutes les facilités .25s; -moz-transition: tous les 0,25 facilité; transition: tous les 0,25 facilité; Flotter à droite; affichage: inline-block; remplissage: 1px 1em 0; / * faire apparaître le centre de 1px en surbrillance * / line-height: 2.25em; 

    Qu'avons-nous fait ici?

    Position
    Nous avons flotté notre bouton à droite. Cela fera apparaître le bouton à droite de l'en-tête de la liste principale.
    Rembourrage
    Nous avons utilisé la propriété line-height pour que le bouton atteigne la hauteur souhaitée. Nous avons également ajouté 1px de remplissage en haut, ce qui contrebalance la surbrillance de 1px que nous avons ajoutée à l'aide de la propriété box-shadow..
    Style visuel
    Nous avons ajouté des styles visuels en utilisant des bordures, des ombres, etc. Nous avons également utilisé la fonctionnalité de dégradé de fond CSS3 (vous pouvez utiliser des outils de génération utiles tels que ColorZilla pour générer vos dégradés)..

    Étape 11: Styles de boutons alternatifs

    Tout va très bien. Ce que nous voulons faire maintenant, c’est d’ajouter des styles pour une classe qui seront appliqués au (x) bouton (s) quand ils seront cliqués. Pour ce tutoriel, nous allons ajouter le texte "rejoindre maintenant" au texte du bouton existant lorsque le bouton est cliqué. Essentiellement, l'utilisateur doit prendre la décision de "rejoindre" deux fois.

    Pour ce faire, nous allons utiliser certains styles CSS, y compris la pseudo-classe CSS3. ::après

    Styles de classe cliqués

    Créons une classe appelée "cliquée" à laquelle nous pouvons ajouter nos styles de bouton "cliqué" (à des fins de développement, vous pouvez ajouter manuellement une classe de "cliqué" à 15,99 $).

     .join.clicked background: # 24a501; / * Anciens navigateurs * / arrière-plan: -moz-linear-gradient (top, rgba (30,183,0,1) 0%, rgba (36,165,1,1) 100%); / * FF3.6 + * / background: -webkit-gradient (linéaire, gauche en haut, gauche en bas, couleur-stop (0%, rgba (30,183,0,1)), couleur-stop (100%, rgba (36,165 , 1,1))); / * Chrome, Safari4 + * / arrière-plan: -webkit-linear-gradient (haut, rgba (30,183,0,1) 0%, rgba (36,165,1,1) 100%); / * Chrome10 +, Safari5.1 + * / arrière-plan: -o-linear-gradient (en haut, rgba (30,183,0,1) 0%, rgba (36,165,1,1) 100%); / * Opera 11.10+ * / background: -ms-linear-gradient (haut, rgba (30,183,0,1) 0%, rgba (36,165,1,1) 100%); / * IE10 + * / arrière-plan: gradient linéaire (haut, rgba (30,183,0,1) 0%, rgba (36,165,1,1) 100%); / * W3C * / filter: progid: DXImageTransform.Microsoft.gradient (startColorstr = "# 1eb700", endColorstr = "# 24a501", GradientType = 0); / * IE6-9 * / border: 1px solid # 1e8701; border-bottom-color: # 176701; border-top-color: # 24a501; box-shadow: 0 1px 0 #bbb, 0 1px 0 # acc63d inset; rembourrage: 1px 2em 0; curseur: pointeur;  .join.clicked: active box-shadow: 0 0 8px # 777 inset; 

    Comme vous pouvez le constater, nous avons attaché la classe "ayant cliqué" à la classe "bouton". De cette façon, les styles que nous déclarons pour "cliqué" n'apparaîtront que sur les éléments ayant également une classe de bouton. En ce qui concerne le style, nous avons simplement changé sa couleur et ses bordures. Vous avez peut-être aussi remarqué que nous avons ajouté une ombre-boîte au bouton lorsque vous cliquez dessus. Cela va ajouter un style de bouton en retrait qui aide à confirmer à l'utilisateur que le bouton a été cliqué.

    ::après styles de classe

    Lorsque l'utilisateur clique sur le bouton du prix, nous souhaitons que le bouton développe et ajoute le texte "rejoindre maintenant". Pour ce faire, nous allons utiliser la pseudo classe CSS3 ::après insérer le texte que nous voulons.

     .join.clicked :: before content: 'Join Now'; 

    Maintenant, nous avons quelque chose comme ceci:


    Étape 12: Requêtes avec les médias

    Comme vous pouvez le constater, notre bouton "rejoindre maintenant" commence à être un peu à l'étroit. Si notre texte d’en-tête est vraiment long, notre bouton s’affichera dans notre en-tête. Nous allons donc tirer parti de la puissance des requêtes multimédias pour faire passer notre bouton d'action au niveau supérieur lorsque la taille de l'écran est réduite..

    Créons une requête multimédia pour déplacer notre bouton:

     Écran @média et (largeur maximale: 450 pixels) .info h2 display: block;  .join float: none; marge inférieure: 20 px; 

    Maintenant, notre bouton va tomber sous l'en-tête pour des tailles d'écran plus petites!


    Étape 13: Interaction des boutons avec jQuery

    Entrons maintenant dans notre fichier "script.js" et écrivons du code javascript qui modifiera le style de nos boutons quand ils seront cliqués.

    Tout d'abord, configurons notre script pour jQuery

     $ (document) .ready (function () // code ici);

    Étape 14: Basculement des classes

    Notre script est en fait assez simple. Tout ce que nous devons faire est de basculer la classe de "cliqué" chaque fois qu'un bouton est cliqué.

    Donc, configurons une fonction:

     $ ('. join'). on ('click', function () // code here);

    Maintenant, ce que nous voulons faire, c'est vérifier et voir si le bouton sur lequel vous avez cliqué a déjà une classe de "cliqué" (peut-être a-t-il été cliqué plus tôt). S'il n'a pas la classe 'clicked', nous l'ajouterons et empêcherons la href attribut du lien d'être suivi.

     // s'il n'a pas de classe de cliqué, // ajoutez-en une et empêchez le lien d'être suivi si (! ($ (this) .hasClass ('clicked')))) // Supprimez toutes les classes 'cliquées' s'il y a des $ ('. clicked'). removeClass ('clicked'); // Ajoute la classe 'clicked' au bouton sur lequel on a cliqué $ (this) .addClass ('clicked'); // empêche le lien d'être suivi return false; 

    Si le bouton sur lequel vous avez cliqué a déjà une classe de "cliqué", le href la valeur sera suivie par le navigateur. Cela fonctionne bien car si un utilisateur rencontre cette page et que javascript est désactivé, il ne pourra tout simplement pas confirmer sa décision de "rejoindre maintenant". Au lieu de cela, le lien sera simplement suivi sans aucun retour de confirmation.


    Étape 15: Suppression de la classe sur laquelle vous avez cliqué

    Si un utilisateur clique sur le bouton de prix, son état de bouton sera modifié. Que se passe-t-il s’ils veulent fermer le bouton et qu’ils cliquent en dehors du bouton lui-même? Nous allons enregistrer ce clic et supprimer la classe de "cliqué". Ceci est une simple ligne de jQuery:

     // si le clic survient en dehors du bouton .buy, supprimez sa classe $ ('body'). on ('click', function () $ ('. clicked'). removeClass ('clicked'););

    Étape 16: Ajout d'une transition

    Nous souhaitons ajouter un peu plus d’interactivité en rendant la transition entre l’état normal des boutons «cliqué» et normal. Nous allons simplement utiliser une transition CSS3 et l'appliquer à la classe de boutons 'rejoindre':

     -webkit-transition: tout le monde est facilité; -moz-transition: tous les 0,25 facilité; -ms-transition: toutes les facilités .25s; -o-transition: tout le monde est facilité. transition: tous les 0,25 facilité;

    C'est tout!

    Vous avez maintenant un bouton de confirmation de confirmation. Cela aidera les utilisateurs à confirmer leur choix de prendre une décision importante avec votre page Web / application. N'hésitez pas à jouer avec ce concept, à l'améliorer et à en apprendre davantage!