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 des champs de formulaire, améliorer la présentation visuelle de vos formulaires et améliorer l’expérience utilisateur.
Le bloc de formulaires adaptatifs crée une structure cohérente pour tous les champs de formulaire. Cette 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 de champ.
Ce document décrit la structure d’HTML pour divers composants de formulaire et 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 Forms adaptatif.
À la fin de l’article, vous pourrez :
- Comprendre la structure du fichier CSS par défaut inclus dans le bloc de Forms adaptatif
- Comprenez la structure HTML des composants de formulaire fournis par le bloc de Forms adaptatif, y compris les composants généraux et les composants spécifiques tels que les listes déroulantes, les groupes de cases d’option et les groupes de cases à cocher
- Découvrez comment mettre en forme les champs de formulaire en fonction du type et des noms de champ à l’aide de sélecteurs CSS, ce qui permet d’appliquer 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 de saisie : ils incluent des entrées de texte, des entrées d’e-mail, des entrées de mot de passe, etc
- Groupes de cases à cocher : utilisé pour sélectionner plusieurs options
- Groupes de cases d’option : permet de 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 des é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, de classes ou d’identifiants
- Propriétés : les propriétés CSS définissent l’apparence visuelle des éléments. Les propriétés courantes pour la mise en forme des champs de formulaire comprennent la couleur, la couleur d’arrière-plan, la bordure, la marge intérieure, la marge, etc
- Modèle Box: le modèle box CSS décrit la structure des éléments HTML sous la forme d’une zone de contenu entourée d’une marge intérieure, de bordures et de marges
- Flexbox/Grille : les CSS Flexbox et Grid 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 le fichier
/blocks/form/form.css
. 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
forms.css
par défaut comme base et personnalisez-le pour modifier l’aspect de vos composants de formulaire, en les rendant attrayants visuellement et conviviaux. 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 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.
-
Styles divers : cette section couvre les styles pour les messages de succès ou d’erreur, les zones de chargement de fichier 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 cases d’option 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, text (text-wrapper), number (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. Plusieurs tirets consécutifs dans le nom sont remplacés par un seul tiret
(-)
. Les tirets de début et de fin d’un nom de champ sont supprimés. Par exemple, prénom (field-first-name field-wrapper) - {FieldId} : il s’agit d’un identifiant unique pour le champ, généré automatiquement
- {Required} : 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 en utilisant l’attributfor
-
Entrée : l’élément
input
définit le type de données à renseigner. Par exemple, texte, nombre, e-mail -
Description (facultatif) : la
div
avec la classefield-description
fournit des informations ou des instructions supplémentaires pour l’utilisateur
Exemple de structure HTML
code language-html |
---|
|
code language-css |
---|
|
.{Type}-wrapper
: cible l’élément dediv
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 le ciblage des champs de saisie 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 |
---|
|
code language-css |
---|
|
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 (<legend>) 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
- Utiliser le service d’envoi de formulaires