Personnaliser l’apparence de vos formulaires
Le style des formulaires Edge Delivery Services pour AEM Forms nécessite une compréhension approfondie des propriétés personnalisées CSS, de l’architecture par blocs et des stratégies de ciblage spécifiques aux composants. Contrairement aux approches de style de formulaire traditionnelles, le bloc de formulaires adaptatifs implémente un système de jetons de conception systématique qui permet d’obtenir un thème cohérent tout en conservant les avantages en termes de performances et d’accessibilité d’Edge Delivery Services.
L’architecture en bloc de formulaires adaptatifs génère des structures HTML normalisées sur tous les composants de formulaire, ce qui crée des modèles prévisibles pour le ciblage et la personnalisation CSS. Cette cohérence permet aux développeurs et aux développeuses de mettre en œuvre des systèmes de style complets qui s’adaptent à toutes les implémentations de formulaires complexes, tout en préservant les optimisations de performances par bloc qui rendent Edge Delivery Services exceptionnellement rapide.
Ce guide complet couvre les bases techniques du style de formulaire dans l’écosystème Edge Delivery Services, y compris les systèmes de propriétés personnalisées CSS, les modèles de structure HTML de composant et les techniques de style avancées. La documentation fournit à la fois une compréhension théorique et des conseils pratiques d’implémentation pour créer des expériences de formulaire de marque sophistiquées.
Ce que vous apprendrez :
Maîtrise des propriétés personnalisées CSS : comprenez le système de variables complet qui contrôle l’aspect du formulaire, y compris les modèles de couleurs, les échelles de typographie, les systèmes d’espacement et les paramètres de mise en page. Découvrez comment remplacer et étendre ces propriétés pour implémenter des thèmes de marque complets.
Compréhension de l’architecture des composants : approfondissez vos connaissances des modèles de structure HTML utilisés par chaque type de composant de formulaire, ce qui permet un ciblage et une personnalisation CSS précis sans rompre avec les fonctionnalités ou les fonctionnalités d’accessibilité sous-jacentes.
Techniques de style avancées : implémentez des modèles de style sophistiqués, notamment un style basé sur l’état, une intégration de conception réactive et des stratégies de personnalisation optimisées pour les performances, qui conservent les caractéristiques de chargement rapide d’Edge Delivery Services.
Stratégies d’implémentation professionnelles : découvrez les approches standard du secteur en matière de style de formulaire, y compris l’intégration du système de conception, l’architecture CSS gérable et les techniques de dépannage pour les scénarios de style complexes.
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.
Style de formulaire complet avec propriétés personnalisées CSS
Le bloc de formulaires adaptatifs utilise une architecture CSS sophistiquée basée sur des propriétés personnalisées (variables CSS) qui permettent un thème systématique et un style cohérent sur tous les composants de formulaire. La compréhension de cette structure est essentielle pour une personnalisation et une valorisation de marque efficaces des formulaires.
Comprendre l’architecture de forms.css
Les styles de formulaire par défaut se trouvent dans le référentiel de votre projet à l’adresse /blocks/form/form.css
et suivent une approche structurée qui privilégie la facilité de maintenance, la cohérence et la flexibilité de personnalisation. L’architecture se compose de plusieurs composants clés :
Fondation des propriétés personnalisées CSS : le système de style est basé sur les propriétés personnalisées CSS définies au niveau du :root
, fournissant un système de thème centralisé qui se répercute en cascade sur tous les composants de formulaire. Ces variables établissent des jetons de conception pour les couleurs, la typographie, l’espacement et les propriétés de mise en page.
Structure CSS basée sur les blocs : Edge Delivery Services utilise une architecture basée sur les blocs, où la classe .form
sert d’espace de noms principal pour tous les styles liés au formulaire, ce qui garantit une isolation de portée appropriée et empêche les conflits CSS avec d’autres composants de page.
Style spécifique aux composants : les composants de formulaire individuels sont stylisés à l’aide de modèles de wrapper cohérents (.{Type}-wrapper
) qui fournissent un ciblage prévisible pour différents types de champs tout en préservant l’intégrité globale du système de conception.
Référence et personnalisation des propriétés personnalisées CSS
Le système de style de formulaire comprend plus de 50 propriétés personnalisées CSS qui contrôlent tous les aspects de l’aspect et du comportement du formulaire. La compréhension de ces propriétés permet une personnalisation complète tout en maintenant la cohérence de la conception.
Le système de couleurs établit une base visuelle complète pour les formulaires grâce à des propriétés personnalisées soigneusement organisées :
code language-css |
---|
|
Exemple pratique de personnalisation : pour implémenter un thème sombre pour vos formulaires, remplacez les variables de couleur de base :
code language-css |
---|
|
Cette modification unique se propage à tous les composants de formulaire, car le système utilise des références de variable plutôt que des valeurs codées en dur.
Les variables de typographie et d’espacement permettent de contrôler entièrement la présentation du texte et l’espacement des mises en page :
code language-css |
---|
|
Exemple pratique de personnalisation : pour créer une mise en page de formulaire plus compacte avec une typographie plus petite :
code language-css |
---|
|
Les variables de mise en page contrôlent les dimensions du formulaire, le comportement de la grille et la disposition des composants :
code language-css |
---|
|
Exemple pratique de personnalisation : pour créer un formulaire de style carte avec une profondeur visuelle améliorée :
code language-css |
---|
|
Modèles de style CSS et bonnes pratiques
Le bloc de formulaires adaptatifs suit des modèles CSS spécifiques qui assurent un style facile à maintenir, performant et cohérent à tous les composants.
Conteneur de formulaires au niveau du bloc : ciblez le conteneur de formulaires principal pour la mise en page globale et le style d’arrière-plan :
code language-css |
---|
|
Modèles de wrapper de composants : ciblez des types de champs spécifiques à l’aide de classes de wrapper cohérentes :
code language-css |
---|
|
Ciblage spécifique au champ : ciblez des champs individuels par nom pour des exigences de style uniques :
code language-css |
---|
|
Style basé sur l’état : implémentez la validation et les états d’interaction :
code language-css |
---|
|
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.
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 :
Structure HTML des composants généraux
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 |
---|
|
Sélecteur CSS pour les composants généraux
code language-css |
---|
|
.form .{Type}-wrapper
: cible l’élément du champ de wrapper en fonction du type de champ. Par exemple,.form .text-wrapper
cible tous les conteneurs de champs de texte..form .{Type}-wrapper input
: cible les éléments d’entrée réels dans le wrapper. Il s’agit du modèle recommandé pour la mise en forme des entrées de formulaire..form .field-{Name}
: cible les éléments en fonction du nom de champ spécifique. Par exemple,.form .field-first-name
cible le conteneur de champ « Prénom ». Utilisez.form .field-{Name} input
pour cibler spécifiquement l’élément d’entrée.- Évitez :
main .form form .{Type}-wrapper
- Cela crée une spécificité CSS inutile et est plus difficile à gérer.
Exemples de sélecteurs CSS pour les composants généraux
code language-css |
---|
|
Pour les menus déroulants, l’élément select
est utilisé à la place d’un élément input
:
Structure HTML du composant de liste déroulante
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
Sélecteurs CSS pour le composant de liste déroulante
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.
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 :
Structure HTML du groupe de boutons radio
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
Sélecteurs CSS pour les groupes de boutons radio
- 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 |
---|
|
Structure HTML du groupe de cases à cocher
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
Sélecteurs CSS pour les groupes de cases à cocher
- 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 |
---|
|
- 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 |
---|
|
- 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 |
---|
|
- 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 |
---|
|
Structure HTML des 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.Les é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.
Exemples de sélecteurs CSS pour les composants de panneau/conteneur
- 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.
Structure HTML d’un 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.
Sélecteurs CSS pour un panneau répétable
- 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 |
---|
|
Structure HTML pour une 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.
Sélecteurs CSS pour le composant de fichier joint
- 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.
Vous pouvez utiliser des sélecteurs CSS pour cibler des types de champ spécifiques et appliquer les styles de manière cohérente.
Structure HTML
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.
Exemple de sélecteurs CSS
code language-css |
---|
|
Vous pouvez également cibler des champs individuels par nom pour appliquer des styles uniques.
Structure HTML
code language-html |
---|
|
Exemple de structure HTML
code language-html |
---|
|
Exemple de sélecteur CSS
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 de formulaire Edge Delivery Services suit les conventions de bloc de formulaires adaptatifs, où les conteneurs sont marqués de classes spécifiques au champ comme « field-otp » pour les champs portant le nom « otp ».
Structure et implémentation des fichiers CSS
Implémentation de référence
La référence complète du style de formulaire est disponible dans le référentiel standard d’AEM Forms :
code language-none |
---|
|
Ce fichier sert d’implémentation canonique du système de propriétés personnalisées CSS et fournit la base de tous les styles de formulaire. Il comprend des définitions complètes de toutes les variables CSS, les modèles de style de composant et les implémentations en responsive design.
Dans votre projet Edge Delivery Services, implémentez le style de formulaire au moyen de cette approche structurée :
code language-none |
---|
|
Remplacements de propriétés personnalisées CSS : remplacez les variables de formulaire dans vos styles globaux pour implémenter un thème spécifique à la marque :
code language-css |
---|
|
Personnalisations spécifiques aux composants :
ajoutez un style spécifique au composant tout en conservant le système de variables CSS :
code language-css |
---|
|
Intégration en responsive design : utilisez des propriétés personnalisées CSS dans les requêtes de média pour obtenir un comportement réactif cohérent :
code language-css |
---|
|
Exemple d’implémentation de style complète
Cette section explique comment créer un formulaire moderne et conforme à l’identité de marque en utilisant des propriétés CSS personnalisées. La mise en œuvre est divisée en sous-sections claires pour une compréhension et une navigation plus faciles.
Définissez la palette de couleurs, l’espacement et la typographie de votre marque à l’aide des propriétés personnalisées CSS.
code language-css |
---|
|
Appliquez un arrière-plan moderne, un rayon de bordure et une ombre au conteneur de formulaire pour une mise en page visuellement attrayante.
code language-css |
---|
|
Appliquez un style au texte, à l’e-mail et aux champs d’entrée numériques pour un aspect épuré et moderne.
code language-css |
---|
|
Vous pouvez étendre davantage la mise en forme du formulaire en ciblant des champs, des états ou des composants spécifiques, si nécessaire. Reportez-vous aux sections précédentes pour obtenir des modèles avancés.
code language-css |
---|
|
Cette approche complète montre comment les propriétés personnalisées CSS permettent un thème sophistiqué tout en conservant l’intégrité structurelle et les fonctionnalités d’accessibilité du système de blocs de formulaires adaptatifs.
Résolution des problèmes CSS
code language-css |
---|
|
code language-css |
---|
|
code language-css |
---|
|
code language-css |
---|
|
Bonnes pratiques spécifiques aux composants
code language-css |
---|
|
code language-css |
---|
|
Résumé des bonnes pratiques
- Utiliser des propriétés personnalisées CSS : utilisez des variables pour obtenir un thème cohérent
- Suivre l’architecture basée sur les blocs : utilisez
.form
comme sélecteur de blocs principal - Évitez la sur-spécificité : n’utilisez
main .form form
que si nécessaire - Cibler les wrappers : utilisez des modèles
.{Type}-wrapper
pour le ciblage des composants - Maintenir la cohérence : utilisez les mêmes modèles de sélecteur tout au long du projet
- Tester sur tous les appareils : assurez-vous que les formulaires fonctionnent correctement sur les appareils mobiles, les tablettes et les ordinateurs de bureau
- Valider l’accessibilité : assurez-vous que les styles n’interfèrent pas avec les lecteurs d’écran ou la navigation au clavier