Personnaliser l’apparence de vos formulaires
Les formulaires sont essentiels pour les interactions des utilisateurs et des utilisatrices sur les sites web, car cela leur permet de saisir des données. Vous pouvez utiliser des feuilles de style en cascade (CSS) pour mettre en forme les champs d’un formulaire, améliorer la présentation visuelle de vos formulaires et améliorer l’expérience client.
Le bloc de formulaires adaptatifs crée une structure cohérente pour tous les champs de formulaire. La structure cohérente facilite le développement de sélecteurs CSS pour sélectionner et mettre en forme les champs de formulaire en fonction du type de champ et des noms des champs.
Ce document décrit la structure du HTML pour divers composants de formulaire. Il vous aide à mieux comprendre comment créer des sélecteurs CSS pour divers champs de formulaire afin de mettre en forme les champs de formulaire d’un bloc de formulaires adaptatifs.
À la fin de l’article :
- Vous comprenez la structure du fichier CSS par défaut inclus dans le bloc de formulaires adaptatifs.
- Vous comprenez la structure HTML des composants de formulaire fournis par le bloc de formulaires adaptatifs, y compris les composants généraux et des composants spécifiques tels que les listes déroulantes, les groupes de boutons radio et les groupes de cases à cocher.
- Vous apprenez à définir le style de champs de formulaire en fonction du type de champ et des noms de champs à l’aide de sélecteurs CSS, ce qui permet d’obtenir un style cohérent ou unique en fonction des besoins.
Présentation des types de champs de formulaire
Avant de passer à la définition du style, examinons les types de champs de formulaire communs pris en charge par le bloc de formulaires adaptatifs :
- Champs d’entrée : ces champs incluent des entrées de texte, des entrées d’e-mail, des entrées de mot de passe, et bien plus encore.
- Groupes de cases à cocher : utilisés pour sélectionner plusieurs options.
- Groupes de boutons radio : utilisés pour sélectionner une seule option dans un groupe.
- Listes déroulantes : également appelées zones de sélection, utilisées pour sélectionner une option dans une liste.
- Panneaux/Conteneurs : utilisés pour regrouper les éléments de formulaire associés.
Principes de base de la définition du style
Il est essentiel de comprendre les concepts de base de CSS avant de définir le style de champs de formulaire spécifiques :
- Sélecteurs : les sélecteurs CSS vous permettent de cibler des éléments HTML spécifiques pour la définition du style. Vous pouvez utiliser des sélecteurs d’éléments, des sélecteurs de classe ou des sélecteurs d’ID.
- Propriétés : les propriétés CSS définissent l’apparence visuelle des éléments. Les propriétés courantes de définition du style des champs de formulaire incluent les suivantes : couleur, couleur d’arrière-plan, bordure, remplissage, marge, et bien plus encore.
- Modèle de zone : le modèle de zone CSS décrit la structure des éléments HTML sous la forme d’une zone de contenu entourée d’un remplissage, de bordures et de marges.
- Flexbox/Grille : les dispositions de Flexbox et de grille CSS sont des outils puissants pour créer des conceptions réactives et flexibles.
Définir le style d’un formulaire pour un bloc de formulaires adaptatifs
Le bloc de formulaires adaptatifs offre une structure HTML normalisée, ce qui simplifie le processus de sélection et de définition du style des composants de formulaire :
-
Mettre à jour les styles par défaut : vous pouvez modifier les styles par défaut d’un formulaire en modifiant les
/blocks/form/form.css file
. Ce fichier fournit une définition de style de formulaire complet, qui prend en charge les formulaires de l’assistant en plusieurs étapes. Il met l’accent sur l’utilisation de variables CSS personnalisées pour faciliter la personnalisation, la maintenance et la définition de style uniforme entre les formulaires. Pour plus d’informations sur l’ajout du bloc de formulaires adaptatifs à votre projet, reportez-vous à Création d’un formulaire. -
Personnalisation : utilisez le fichier
forms.css
par défaut comme base et personnalisez-le pour modifier l’aspect de vos composants de formulaire, ce qui le rend visuellement attrayant et convivial. La structure du fichier encourage l’organisation et la gestion des styles pour les formulaires, ce qui favorise la cohérence des conceptions sur votre site web.
Répartition de la structure de forms.css
-
Variables globales : définies au niveau
:root
, ces variables (--variable-name
) stockent les valeurs utilisées dans toute la feuille de style pour assurer la cohérence et faciliter les mises à jour. Ces variables définissent les couleurs, les tailles de police, le remplissage et d’autres propriétés. Vous pouvez déclarer vos propres variables globales ou modifier les variables existantes pour modifier le style du formulaire. -
Styles du sélecteur universel : le sélecteur
*
correspond à chaque élément du formulaire, en veillant à ce que les styles soient appliqués par défaut à tous les composants, y compris la définition de la propriétébox-sizing
surborder-box
. -
Définition du style du formulaire : cette section porte sur la définition du style des composants de formulaire à l’aide de sélecteurs afin de cibler des éléments HTML spécifiques. Elle définit des styles pour les champs d’entrée, les zones de texte, les cases à cocher, les boutons radio, les entrées de fichier, les libellés de formulaire et les descriptions.
-
Définition du style de l’assistant (le cas échéant) : cette section est consacrée à la définition du style de la disposition de l’assistant, un formulaire en plusieurs étapes dans lequel chaque étape est affichée une par une. Elle définit des styles pour le conteneur de l’assistant, les jeux de champs, les légendes, les boutons de navigation et les dispositions réactives.
-
Requêtes de média : celles-ci fournissent des styles pour différentes tailles d’écran, en ajustant la disposition et le style en conséquence.
-
Définition de style diverse : cette section décrit les styles des messages de réussite ou d’erreur, les zones de chargement de fichiers et d’autres éléments que vous pouvez rencontrer dans un formulaire.
Structure des composants
Le bloc Formulaires adaptatifs offre une structure HTML cohérente pour divers éléments de formulaire, simplifiant ainsi la définition de style et la gestion. Vous pouvez manipuler les composants à l’aide de CSS à des fins de définition de style.
Composants généraux (à l’exception des listes déroulantes, des groupes de boutons radio et des groupes de cases à cocher) :
Tous les champs de formulaire, à l’exception des listes déroulantes, des groupes de boutons radio et des groupes de cases à cocher, présentent la structure HTML suivante :
code language-html |
---|
|
-
Classes : l’élément div comporte plusieurs classes pour le ciblage d’éléments et de définitions de styles spécifiques. Vous avez besoin des classes
{Type}-wrapper
oufield-{Name}
pour développer un sélecteur CSS afin de définir le style d’un champ de formulaire :- {Type} : identifie le composant par type de champ. Par exemple, texte (text-wrapper), nombre (number-wrapper), date (date-wrapper).
- {Name} : identifie le composant par son nom. Le nom du champ ne peut contenir que des caractères alphanumériques, les tirets consécutifs multiples dans le nom sont remplacés par un seul tiret
(-)
, et les tirets de début et de fin dans le nom d’un champ sont supprimés. Par exemple, first-name (field-first-name field-wrapper). - {FieldId} : il s’agit de l’identifiant unique du champ, généré automatiquement.
- {Required} : il s’agit d’une valeur booléenne indiquant si le champ est obligatoire.
-
Libellé : l’élément
label
fournit un texte descriptif pour le champ et l’associe à l’élément d’entrée à l’aide de l’attributfor
. -
Entrée : l’élément
input
définit le type de données à renseigner. Par exemple : texte, nombre, e-mail. -
Description (facultatif) :
div
avec la classefield-description
fournit des informations ou des instructions supplémentaires à l’intention de l’utilisateur ou de l’utilisatrice.
Exemple de structure HTML
code language-html |
---|
|
code language-css |
---|
|
.{Type}-wrapper
: cible l’élémentdiv
externe en fonction du type de champ. Par exemple :.text-wrapper
cible tous les champs de texte..field-{Name}
: affine la sélection de l’élément en fonction du nom de champ spécifique. Par exemple,.field-first-name
cible le champ de texte « Prénom ». Bien que ce sélecteur puisse être utilisé pour cibler des éléments avec la classe field-{Name}, il est important de faire preuve de prudence. Dans ce cas spécifique, il ne serait pas utile de définir le style de champs d’entrée, car cela ciblerait non seulement l’entrée elle-même, mais également les éléments de libellé et de description. Il est recommandé d’utiliser des sélecteurs plus spécifiques comme ceux dont vous disposez pour cibler les champs d’entrée de texte (entrée .text-wrapper).
Exemples de sélecteurs CSS pour les composants généraux
code language-css |
---|
|
Composant de liste déroulante
Pour les menus déroulants, l’élément select
est utilisé à la place d’un élément input
:
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
Le CSS suivant répertorie des exemples de sélecteurs CSS pour les composants de liste déroulante.
code language-css |
---|
|
- Cibler le wrapper : le premier sélecteur (
.drop-down-wrapper
) cible l’élément wrapper externe, assurant ainsi l’application des styles à l’ensemble du composant de liste déroulante. - Disposition Flexbox : Flexbox organise le libellé, la liste déroulante et la description verticalement pour une disposition claire.
- Définition du style de libellé : le libellé se distingue par une police plus épaisse et une légère marge.
- Définition du style de liste déroulante : l’élément
select
comprend une bordure, un remplissage et des coins arrondis pour un aspect lisse. - Couleur d’arrière-plan : une couleur d’arrière-plan cohérente est définie à des fins d’harmonie visuelle.
- Personnalisation des flèches : des styles facultatifs masquent la flèche de liste déroulante par défaut et créent une flèche personnalisée à l’aide d’un caractère Unicode et d’un positionnement.
Groupes de boutons radio
Tout comme les composants de liste déroulante, les groupes de boutons radio présentent une structure HTML et une structure CSS qui leur sont propres :
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
- Ciblage de filedset
code language-css |
---|
|
Ce sélecteur cible n’importe quel fieldset avec la classe radio-group-wrapper. Cela s’avère utile pour appliquer des styles généraux à l’ensemble du groupe de boutons radio.
- Ciblage des libellés de boutons radio
code language-css |
---|
|
- Cibler tous les libellés de bouton radio dans un fieldset spécifique en fonction de son nom
code language-css |
---|
|
Groupes de cases à cocher
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
-
Ciblage du wrapper externe : ces sélecteurs ciblent les conteneurs les plus éloignés des groupes de boutons radio et de cases à cocher, vous permettant ainsi d’appliquer des styles généraux à l’ensemble de la structure du groupe. Cela s’avère utile pour définir l’espacement, l’alignement ou d’autres propriétés liées à la disposition.
code language-css /* Targets radio group wrappers */ .radio-group-wrapper { margin-bottom: 20px; /* Adds space between radio groups */ } /* Targets checkbox group wrappers */ .checkbox-group-wrapper { margin-bottom: 20px; /* Adds space between checkbox groups */ }
-
Ciblage des libellés de groupes : ce sélecteur cible l’élément
.field-label
dans les wrappers de groupes de boutons radio et de cases à cocher. Cela vous permet de définir le style des libellés propres à ces groupes, ce qui peut les rendre plus remarquables.code language-css .radio-group-wrapper legend, .checkbox-group-wrapper legend { font-weight: bold; /* Makes the group label bold */ }
-
Ciblage d’entrées et de libellés individuels : ces sélecteurs offrent un contrôle plus précis sur les boutons radio et cases à cocher individuels et les libellés qui leur sont associés. Vous pouvez les utiliser pour ajuster le dimensionnement, l’espacement ou appliquer des styles visuels plus distincts.
code language-css /* Styling radio buttons */ .radio-group-wrapper input[type="radio"] { margin-right: 5px; /* Adds space between the input and its label */ } /* Styling radio button labels */ .radio-group-wrapper label { font-size: 15px; /* Changes the label font size */ } /* Styling checkboxes */ .checkbox-group-wrapper input[type="checkbox"] { margin-right: 5px; /* Adds space between the input and its label */ } /* Styling checkbox labels */ .checkbox-group-wrapper label { font-size: 15px; /* Changes the label font size */ }
-
Personnalisation de l’apparence des boutons radio et des cases à cocher : cette technique masque l’entrée par défaut et utilise les pseudo-éléments
:before
et:after
pour créer des visuels personnalisés qui modifient l’apparence en fonction de l’état « coché ».code language-css /* Hide the default radio button or checkbox */ .radio-group-wrapper input[type="radio"], .checkbox-group-wrapper input[type="checkbox"] { opacity: 0; position: absolute; } /* Create a custom radio button */ .radio-group-wrapper input[type="radio"] + label::before { /* ... styles for custom radio button ... */ } .radio-group-wrapper input[type="radio"]:checked + label::before { /* ... styles for checked radio button ... */ } /* Create a custom checkbox */ /* Similar styling as above, with adjustments for a square shape */ .checkbox-group-wrapper input[type="checkbox"] + label::before { /* ... styles for custom checkbox ... */ } .checkbox-group-wrapper input[type="checkbox"]:checked + label::before { /* ... styles for checked checkbox ... */ }
Composants de panneau/conteneur
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
-
L’élément fieldset fait office de conteneur de panneau avec la classe panel-wrapper et des classes supplémentaires pour définir le style en fonction du nom du panneau (field-login).
-
L’élément de légende (
) sert de titre de panneau avec le texte « Informations de connexion » et la classe field-label. L’attribut data-visible="false" peut être utilisé avec JavaScript pour contrôler la visibilité du titre.
-
Dans le fieldset, plusieurs éléments .{Type}-wrapper (.text-wrapper et .password-wrapper dans cet exemple) représentent des champs de formulaire individuels dans le panneau.
-
Chaque wrapper contient un libellé, un champ d’entrée et une description, comme dans les exemples précédents.
- Ciblage du panneau :
code language-css |
---|
|
- le sélecteur
.panel-wrapper
définit le style de tous les éléments avec la classe panel-wrapper, créant ainsi un aspect cohérent pour tous les panneaux.
- Ciblage du titre du panneau :
code language-css |
---|
|
- le sélecteur
.panel-wrapper legend
définit le style de l’élément de légende dans le panneau, ce qui permet de distinguer visuellement le titre.
- Ciblage de champs individuels dans le panneau :
code language-css |
---|
|
- le sélecteur
.panel-wrapper .{Type}-wrapper
cible tous les wrappers avec la classe.{Type}-wrapper
dans le panneau, ce qui vous permet de définir le style de l’espacement entre les champs de formulaire.
- Ciblage de champs spécifiques (facultatif) :
code language-css |
---|
|
- ces sélecteurs facultatifs vous permettent de cibler des wrappers de champ spécifiques dans le panneau pour une définition de style unique, comme la mise en surbrillance du champ du nom d’utilisateur ou d’utilisatrice.
Panneau répétable
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
Chaque panneau présente la même structure que l’exemple de panneau unique, avec des attributs supplémentaires :
-
data-repeatable="true" : cet attribut indique que le panneau peut être répété de manière dynamique à l’aide de JavaScript ou d’un framework.
-
Identifiants et noms uniques : chaque élément du panneau comprend un identifiant unique (par exemple, name-1, email-1) et un attribut name basé sur l’index du panneau (par exemple, name="contacts[0].name"). Cela permet une collecte de données correcte lorsque plusieurs panneaux sont envoyés.
- Ciblage de tous les panneaux répétables :
code language-css |
---|
|
le sélecteur définit le style de tous les panneaux qui peuvent être répétés, assurant ainsi un aspect cohérent.
- Ciblage de champs individuels dans un panneau :
code language-css |
---|
|
ce sélecteur définit le style de tous les wrappers de champ dans un panneau répétable, en assurant un espacement cohérent entre les champs.
- Ciblage de champs spécifiques (dans un panneau) :
code language-css |
---|
|
Pièce jointe
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
- L’attribut class utilise le nom fourni pour le fichier joint (claim_form).
- Les attributs id et name de l’élément d’entrée correspondent au nom du fichier joint (claim_form).
- La section files-list est initialement vide. Elle est renseignée de manière dynamique avec JavaScript lorsque des fichiers sont chargés.
- Ciblage de l’ensemble du composant de fichier joint :
code language-css |
---|
|
ce sélecteur définit le style de l’ensemble du composant de fichier joint, y compris la légende, la zone de déplacement, le champ d’entrée et la liste.
- Ciblage d’éléments spécifiques :
code language-css |
---|
|
ces sélecteurs vous permettent de définir le style individuellement de divers éléments du composant de fichier joint. Vous pouvez ajuster les styles en fonction de vos préférences de conception.
Définir le style des composants
Vous pouvez définir le style des champs de formulaire en fonction de leur type spécifique ({Type}-wrapper
) ou des noms individuels (field-{Name}
). Cela permet un contrôle et une personnalisation plus précis de l’apparence de votre formulaire.
Définition de style basée sur le type de champ
Vous pouvez utiliser des sélecteurs CSS pour cibler des types de champ spécifiques et appliquer les styles de manière cohérente.
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
-
Chaque champ est encapsulé dans un élément
div
avec plusieurs classes :{Type}-wrapper
: identifie le type de champ. Par exemple :form-text-wrapper
,form-number-wrapper
,form-email-wrapper
.field-{Name}
: identifie le champ par son nom. Par exemple :form-name
,form-age
,form-email
.field-wrapper
: classe générique pour tous les wrappers de champ.
-
L’attribut
data-required
indique si le champ est obligatoire ou facultatif. -
Chaque champ comporte un libellé, un élément d’entrée et d’éventuels éléments supplémentaires correspondants, tels que des espaces réservés et des descriptions.
code language-css |
---|
|
Définition de style basée sur le nom du champ
Vous pouvez également cibler des champs individuels par nom pour appliquer des styles uniques.
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
code language-css |
---|
|
Ce CSS cible tous les éléments d’entrée situés dans un élément qui possède la classe field-otp
. La structure HTML de votre formulaire suit les conventions du bloc de formulaires adaptatifs, ce qui implique qu’un conteneur marqué avec la classe "field-otp" contient le champ nommé "otp".
Voir également
- Commencer avec Edge Delivery Services pour AEM Forms
- Créer un formulaire à l’aide de Google Sheets ou de Microsoft Excel
- Configurer vos fichiers Google Sheets ou Microsoft Excel pour accepter des données
- Publier votre formulaire et commencer à collecter des données
- Personnaliser l’apparence de vos formulaires
- Ajouter des sections répétables à un formulaire
- Afficher un message de remerciement personnalisé après l’envoi du formulaire
- Composants de bloc de formulaire adaptatif et leurs propriétés