Comment construire des dispositions de formulaire Web avec une grille CSS

Dans ce tutoriel, nous verrons comment créer plusieurs formulaires Web à l'aide de CSS Grid. Pour chaque exemple, nous utiliserons d’abord des floats, puis nous verrons comment la même présentation pourrait être réalisée avec CSS Grid..

Si vous n'avez aucune connaissance préalable de la grille CSS, jetez un coup d'œil à notre série pour débutants Comprendre le module CSS Grid Layout. Commençons!

1. Formulaire d'inscription de base

Dans cette présentation, nous allons diviser le formulaire en deux colonnes afin d'afficher les étiquettes à gauche et les champs de saisie à droite.. 

Avec CSS "traditionnel"

Une approche traditionnelle de cette mise en page pourrait utiliser des flottants pour nous donner nos colonnes. Notez que nous n’avons pas de wrapper pour l’élément de formulaire; nous allons directement appeler les étiquettes et les entrées.

formulaire débordement: masqué;  label float: left; largeur: 200px; rembourrage à droite: 24px;  input float: left; largeur: calc (100% - 200px);  bouton float: right; largeur: calc (100% - 200px); 

Vous remarquerez que nous utilisons calc () ici, ce qui nous permet de fixer notre colonne de gauche à 200 pixels de large, tandis que la colonne de droite reste fluide.

Voici le résultat, avec quelques styles supplémentaires pour l'esthétique:

Avec CSS Grid Layout

Notre objectif lorsque nous utilisons «Grid» est de définir deux colonnes, puis de placer chaque élément dans la colonne requise..

La première étape consiste à définir notre grille sur l'élément parent forme:

formulaire display: grid; 

Ensuite, nous devons diviser cette grille en utilisant Grille-modèle-colonnes:

formulaire display: grid; grid-template-columns: 200px 1fr; 

Sur la base de la CSS ci-dessus, la première colonne aura une largeur fixe de 200px tandis que le second prendra 1fr (“Une fraction”) de l'espace disponible restant.

Nous devons maintenant définir l'emplacement de nos étiquettes et de nos entrées. Pour ce faire, nous allons utiliser colonne de grille avec des valeurs spécifiques pour les lignes de la grille:

Pour en savoir plus sur le fonctionnement des lignes de la grille, consultez cette astuce rapide:

  • Astuce: nommez vos lignes de grille CSS, juste au cas où

    Dans toute grille CSS, chaque ligne a un numéro d'index auquel on peut faire référence pour placer des éléments de grille. Cependant, nous pouvons également nommer chacune de ces lignes de grille, ce qui en fait…
    Ian Yates
    CSS Grid Layout

Sur la base de ces lignes de grille, nous appliquerons les règles suivantes pour nos étiquettes, nos entrées et le bouton:

label grille-colonne: 1/2;  entrée, bouton grille-colonne: 2/3; 

Les étiquettes se retrouveront dans la colonne qui commence à la ligne 1 et se termine à la ligne 2. Les entrées et le bouton seront placés dans la colonne qui commence à la ligne 2 et se termine à la ligne 3..

Enfin, nous utilisons fossé ajouter une gouttière de 16 px entre les lignes et les colonnes:

formulaire display: grid; grid-template-columns: 200px 1fr; intervalle de grille: 16px; 

2. Formulaire de contact

Dans cette présentation, nous voulons atteindre les objectifs suivants:

  1. Les hauteurs de colonne doivent être égales, de sorte que la barre latérale et le wrapper de formulaire ont la même hauteur..
  2. Nous souhaitons diviser davantage le formulaire (le côté droit) en deux colonnes, en modifiant le bouton afin qu'il remplisse toute la largeur..

Il est parfaitement possible de construire cette disposition en utilisant des flotteurs. Cependant, nous devrons définir un hauteur min pour la colonne de gauche, sinon elle ne prendra pas toute la hauteur. Il existe d'autres approches «traditionnelles» à ce problème, mais aucune n'est particulièrement jolie.

Avec CSS "traditionnel"

Pour résumer, avec les flotteurs, nous devons:

  1. Ajouter hauteur min à la colonne de gauche.
  2. Flotter les contacts et les enveloppes de formulaire.
  3. Ajouter un clearfix ou débordement caché; préserver la hauteur de l'emballage.
  4. Faire flotter les éléments de formulaire et ajouter des marges entre eux.
  5. Réinitialiser flottant pour le zone de texte et envoyer le bouton, puis leur faire remplir toute la largeur.

C'est pas mal de travail, non?

Une meilleure approche serait de résoudre ce problème avec Flexbox ou Grid. Dans ce cas particulier, je préférerais utiliser Grid puisque nous organisons des éléments horizontalement et verticalement.

Avec CSS Grid Layout

Commençons par déclarer une grille sur notre wrapper et la diviser en deux colonnes.

.wrapper display: grid; Grille-modèle-colonnes: 1fr 2fr; 

Notre élément de forme également doit être déclaré une grille:

formulaire display: grid; Grille-modèle-colonnes: 1fr 1fr; intervalle de grille: 20px; 

Après avoir appliqué les règles ci-dessus, nous obtiendrons les éléments suivants:

Nous devons laisser les deux derniers éléments remplir toute la largeur en les étirant de la ligne de quadrillage 1 à la ligne de quadrillage 3..

.pleine largeur grille-colonne: 1/3; 

3. Formulaire de profil

Temps pour notre dernière mise en page. Dans cet exemple, nous avons inclus une entrée permettant aux utilisateurs de télécharger leur photo de profil. Il devrait être placé en haut à droite.

Avec CSS "traditionnel"

Nous allons construire cela avec le balisage suivant:

Couvrant brièvement une approche traditionnelle, nous pouvons réaliser notre mise en page avec les étapes suivantes:

  1. Ajouter position: relative; à l'élément de formulaire.
  2. Positionner absolument le fichier en haut à droite. 
  3. Ajouter un remplissage au formulaire avec la même largeur que l'entrée de fichier.
  4. Spécifiez une largeur fixe pour l'entrée de fichier.

Avec CSS Grid Layout

Ne nous attardons pas trop sur l'approche traditionnelle. Avec Grid, nous allons diviser le formulaire en deux colonnes comme suit:

La première colonne occupera deux fois l’espace horizontal de la deuxième colonne, ce que nous allons réaliser en utilisant fr unités:

formulaire display: grid; Grille-modèle-colonnes: 2fr 1fr; intervalle de grille: 20px; 

Une fois la grille établie, nous devons placer les éléments de formulaire entre les lignes 1 et 2 de la grille:

forme p grille-colonne: 1/2; 

L'étape suivante consiste à placer le fichier d'entrée dans la deuxième colonne. Pour ce faire, nous allons le placer entre la ligne de quadrillage 2 et la ligne de quadrillage 3. En vous déplaçant verticalement, nous allons le faire parcourir les lignes de la ligne de quadrillage 1 à la ligne de quadrillage 2..

.input-file-wrapper grille-colonne: 2/3; rangée de grille: 1/2; 

Conclusion

Bien joué! Nous avons présenté plusieurs exemples d'utilisation de CSS Grid lors de la création de formulaires Web. Comme vous l'aurez remarqué, nous avons économisé beaucoup de temps et d'efforts en écrivant quelques lignes de code, par opposition à l'utilisation de techniques de présentation traditionnelles. Vous pouvez utiliser tous les exemples ci-dessus à partir d'aujourd'hui, grâce à CSS @les soutiens qui nous aident à utiliser une fonctionnalité spécifique comme une amélioration. 

  • Astuce: ajoutez un fichier CSS @supports à vos démonstrations CodePen

    Lorsque vos démonstrations CodePen s'appuient sur des CSS de pointe, il est judicieux d'avertir les utilisateurs. Fournissons une notification lorsque les navigateurs ne prennent pas en charge nos démos, en utilisant…
    Ian Yates
    CodePen

Avez-vous des suggestions pour améliorer ces mises en page? Laissez-moi savoir dans les commentaires ci-dessous!