Personalización del aspecto de los formularios
El estilo de los formularios en Edge Delivery Services para AEM Forms requiere una comprensión sofisticada de las propiedades personalizadas de CSS, la arquitectura basada en bloques y las estrategias de segmentación específicas de componentes. A diferencia de los enfoques tradicionales de estilo de formulario, el bloque de formularios adaptables implementa un sistema de token de diseño sistemático que permite una temática coherente y, al mismo tiempo, mantiene las ventajas de rendimiento y accesibilidad de Edge Delivery Services.
La arquitectura de bloques de formularios adaptables genera estructuras de HTML estandarizadas en todos los componentes del formulario, lo que crea patrones predecibles para la segmentación y personalización de CSS. Esta coherencia permite a los desarrolladores implementar sistemas de estilo completos que se escalan en implementaciones de formularios complejos, al tiempo que preservan las optimizaciones de rendimiento basadas en bloques que hacen que Edge Delivery Services sea excepcionalmente rápido.
Esta guía completa cubre los fundamentos técnicos del estilo de los formularios dentro del ecosistema de Edge Delivery Services, incluidos los sistemas de propiedades personalizadas de CSS, los patrones de estructura HTML de componentes y las técnicas avanzadas de estilo. La documentación proporciona información teórica y orientación práctica sobre la implementación para crear experiencias de formulario sofisticadas y de marca.
Lo que dominará
Dominio de propiedades personalizadas de CSS: comprenda el sistema de variables completo que controla el aspecto del formulario, incluidos los esquemas de color, las escalas tipográficas, los sistemas de espaciado y los parámetros de diseño. Aprenda a anular y ampliar estas propiedades para implementar temas de marca completos.
Comprensión de la arquitectura del componente: obtenga información detallada sobre los patrones de estructura HTML que usa cada tipo de componente de formulario, lo que permite una personalización y un direccionamiento CSS precisos sin causar problemas en la funcionalidad subyacente ni en las características de accesibilidad.
Técnicas de estilo avanzadas: implemente patrones de estilo sofisticados, incluidos el estilo basado en estados, la integración de diseño interactivo y las estrategias de personalización optimizadas para el rendimiento que mantienen las características de carga rápida de Edge Delivery Services.
Estrategias de implementación profesionales: conozca los enfoques estándar del sector para crear el estilo de formularios, incluida la integración del sistema de diseño, la arquitectura CSS sostenible y las técnicas de solución de problemas para escenarios de estilo complejos.
Explicación de los tipos de campo de formulario
Antes de sumergirse en el estilo, vamos a revisar los tipos de campo del formulario común compatibles con el Bloque de formularios adaptables:
- Campos de entrada: incluyen entradas de texto, entradas de correo electrónico, entradas de contraseña y mucho más.
- Grupos de casillas de verificación: se utilizan para seleccionar varias opciones.
- Grupos de radio: se utilizan para seleccionar solo una opción de un grupo.
- Desplegables: también conocidos como casillas de selección, que se utilizan para seleccionar una opción de una lista.
- Paneles/contenedores: se utilizan para agrupar elementos de formulario relacionados.
Principios básicos de estilo
Entender los conceptos fundamentales de CSS es esencial antes de aplicar estilo a campos de formulario específicos:
- Selectores: los selectores CSS permiten aplicar estilos a elementos HTML específicos. Puede utilizar selectores de elementos, selectores de clases o selectores de ID.
- Propiedades: las propiedades CSS definen el aspecto visual de los elementos. Las propiedades comunes para aplicar estilo a los campos de formulario incluyen color, color de fondo, borde, relleno, margen y más.
- Modelo de cuadro: el modelo de cuadro CSS describe la estructura de los elementos HTML como un área de contenido rodeada de relleno, bordes y márgenes.
- Caja flexible/Cuadrícula: Caja flexible CSS y Diseños de cuadrícula son herramientas potentes para crear diseños adaptables y flexibles.
Creación de estilos de formulario completa con propiedades personalizadas de CSS
El bloque de formularios adaptable utiliza una sofisticada arquitectura CSS basada en propiedades personalizadas (variables CSS) que permite aplicar un tema de manera sistemática y un estilo coherente a todos los componentes del formulario. Entender cómo funciona esta estructura es esencial para personalizar y dar personilidad de marca al formulario con éxito.
Explicación de la arquitectura de forms.css
Los estilos de formulario predeterminados se encuentran en el repositorio del proyecto en /blocks/form/form.css
y siguen un enfoque estructurado que da prioridad al mantenimiento, la coherencia y la flexibilidad de personalización. La arquitectura consta de varios componentes clave:
Base de propiedades personalizadas de CSS: el sistema de estilo se basa en propiedades personalizadas de CSS definidas en el nivel :root
, lo que proporciona un sistema de temas centralizado que se aplica en cascada a todos los componentes del formulario. Estas variables establecen tokens de diseño para los colores, la tipografía, el espaciado y las propiedades de diseño.
Estructura CSS basada en bloques: Edge Delivery Services emplea una arquitectura basada en bloques en la que la clase .form
sirve como el área de nombres principal para todos los estilos relacionados con el formulario, lo que garantiza un aislamiento adecuado del ámbito y evita conflictos de CSS con otros componentes de la página.
Estilo específico del componente: los componentes de formulario individuales están diseñados con patrones de contenedor coherentes (.{Type}-wrapper
) que proporcionan un direccionamiento predecible para distintos tipos de campo a la vez que mantienen la integridad general del sistema de diseño.
Referencia y personalización de las propiedades personalizadas de CSS
El sistema de creación de estilos de formularios incluye más de 50 propiedades personalizadas de CSS que controlan todos los aspectos de la apariencia y el comportamiento del formulario. Al entender el funcionamiento de estas propiedades, podrá realizar una personalización completa y, al mismo tiempo, mantener la coherencia del diseño.
El sistema de colores establece una base visual completa para los formularios a través de propiedades personalizadas cuidadosamente organizadas:
code language-css |
---|
|
Ejemplo práctico de personalización: para implementar un tema oscuro en los formularios, anule las variables de color base:
code language-css |
---|
|
Este cambio único se propaga por todos los componentes del formulario porque el sistema utiliza referencias variables en lugar de valores codificados.
Las variables de tipografía y espaciado proporcionan un control exhaustivo sobre la presentación del texto y el espaciado del diseño:
code language-css |
---|
|
Ejemplo práctico de personalización: para crear un diseño de formulario más compacto con una tipografía más pequeña:
code language-css |
---|
|
Las variables de diseño controlan las dimensiones del formulario, el comportamiento de la cuadrícula y la disposición de componentes:
code language-css |
---|
|
Ejemplo práctico de personalización: para crear un formulario de estilo de tarjeta con una profundidad visual mejorada:
code language-css |
---|
|
Patrones de estilo CSS y prácticas recomendadas
El bloque de formularios adaptable sigue patrones CSS específicos que garantizan un mantenimiento, un rendimiento y un estilo coherente en todos los componentes.
Contenedor de formulario de nivel de bloque: establezca como destino el contenedor de formulario principal para el diseño general y el estilo de fondo:
code language-css |
---|
|
Patrones de elementos envolventes de componentes: céntrese en tipos de campo específicos usando clases de elementos envolventes coherentes:
code language-css |
---|
|
Segmentación específica de los campos: segmente los campos individuales por nombre para los requisitos de estilo únicos:
code language-css |
---|
|
Estilo basado en estado: implemente estados de validación e interacción:
code language-css |
---|
|
Estructura de componentes
El bloque de formularios adaptables ofrece una estructura HTML coherente para varios elementos de formulario, lo que garantiza una gestión y un estilo más sencillos. Puede modificar los componentes mediante CSS con fines de estilo.
Todos los campos de formulario, excepto los menús desplegables, los grupos de opción y los grupos de casillas de verificación, tienen la siguiente estructura HTML:
Estructura HTML de los componentes generales
code language-html |
---|
|
- Clases: el elemento div tiene varias clases para segmentar elementos y estilos específicos. Necesita las clases
{Type}-wrapper
ofield-{Name}
para desarrollar un selector de CSS para aplicar estilo a un campo de formulario: - {Type}: identifica el componente por el tipo de campo. Por ejemplo, texto (ajustador de texto), número (ajustador de número), fecha (ajustador de fecha).
- {Name}: identifica el componente por su nombre. El nombre del campo solo puede tener caracteres alfanuméricos. Los múltiples guiones consecutivos del nombre se sustituyen por un solo guion
(-)
, y los guiones inicial y final del nombre de un campo se eliminan. Por ejemplo, nombre (campo-nombre ajustador de campo). - {FieldId}: es un identificador único para el campo, se genera automáticamente.
- {Required}: es un valor booleano que indica si el campo es obligatorio.
- Etiqueta: el elemento
label
proporciona un texto descriptivo para el campo y lo asocia al elemento de entrada mediante el atributofor
. - Entrada: el elemento
input
define el tipo de datos que se van a introducir. Por ejemplo, texto, número, correo electrónico. - Descripción (opcional): la
div
con clasefield-description
proporciona información o instrucciones adicionales para el usuario.
Ejemplo de estructura HTML
code language-html |
---|
|
Selector de CSS para componentes generales
code language-css |
---|
|
.form .{Type}-wrapper
: se centra en el elemento envoltorio del campo en función del tipo de campo. Por ejemplo,.form .text-wrapper
se centra en todos los contenedores de campo de texto..form .{Type}-wrapper input
: se centra en los elementos de entrada reales dentro del contenedor. Este es el patrón recomendado para aplicar estilo a las entradas del formulario..form .field-{Name}
: se centra en los elementos basados en el nombre de campo específico. Por ejemplo,.form .field-first-name
se centra en el contenedor del campo “Nombre”. Use.form .field-{Name} input
para centrarse específicamente en el elemento de entrada.- Evitar:
main .form form .{Type}-wrapper
: esto crea una especificidad CSS innecesaria y es más difícil de mantener.
Ejemplo de selectores CSS para componentes generales
code language-css |
---|
|
Para los menús desplegables, se utiliza el elemento select
en lugar de un elemento input
:
Estructura HTML del componente desplegable
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
Selectores CSS para componentes desplegables
En la siguiente CSS se enumeran algunos selectores CSS de ejemplo para los componentes desplegables.
code language-css |
---|
|
- Segmentar el envolvente: el primer selector (
.drop-down-wrapper
) segmenta el elemento envolvente exterior, lo que garantiza que los estilos se apliquen a todo el componente desplegable. - Diseño del Flexbox: este organiza la etiqueta, la lista desplegable y la descripción verticalmente para conseguir un diseño limpio.
- Estilo de etiqueta: la etiqueta destaca por su grosor de fuente más negrita y un margen ligero.
- Estilo desplegable: el elemento
select
recibe un borde, un relleno y esquinas redondeadas para obtener un aspecto pulido. - Color de fondo: se establece un color de fondo coherente para armonía visual.
- Personalización de flechas: los estilos opcionales ocultan la flecha desplegable predeterminada y crean una flecha personalizada con un carácter Unicode y una posición determinada.
Al igual que los componentes desplegables, los grupos de radio tienen su propia estructura HTML y estructura CSS:
Estructura HTML del grupo de radio
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
Selectores CSS para grupos de radio
- Segmentación del Fieldset
code language-css |
---|
|
Este selector se dirige a cualquier fieldset con la clase radio-group-wrapper. Esto sería útil para aplicar estilos generales a todo el grupo de radio.
- Segmentación de etiquetas de botones de radio
code language-css |
---|
|
- Segmente todas las etiquetas de botones de radio de un fieldset específico en función de su nombre
code language-css |
---|
|
Estructura HTML del grupo de casillas de verificación
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
Selectores CSS para grupos de casillas de verificación
- Segmentación del contenedor exterior: estos selectores se dirigen a los contenedores más externos de los grupos de radio y de la casilla de verificación, lo que permite aplicar estilos generales a toda la estructura del grupo. Esto resulta útil para establecer el espaciado, la alineación u otras propiedades relacionadas con el diseño.
code language-css |
---|
|
- Etiquetas de grupos de segmentación: este selector se dirige al elemento
.field-label
dentro de los contenedores de grupo de casilla de verificación y radio. Esto le permite aplicar estilo a las etiquetas específicamente para estos grupos, lo que podría hacerlas destacar más.
code language-css |
---|
|
- Segmentación de entradas y etiquetas individuales: estos selectores proporcionan un control más granular sobre los botones de opción individuales, casillas de verificación y sus etiquetas asociadas. Puede utilizarlos para ajustar el tamaño, el espaciado o aplicar estilos visuales más distintos.
code language-css |
---|
|
- Personalización del aspecto de los botones de opción y las casillas de verificación: esta técnica oculta la entrada predeterminada y utiliza los pseudoelementos
:before
y:after
para crear imágenes personalizadas que cambian de aspecto en función del estado “activado”.
code language-css |
---|
|
Estructura HTML de los componentes de panel/contenedor
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
- El elemento fieldset actúa como contenedor de panel con la clase panel-wrapper y clases adicionales para el estilo basadas en el nombre del panel (field-login).
- El elemento de leyenda (
<legend>
) sirve como título del panel con el texto “Información de inicio de sesión” y la etiqueta de campo de clase. El atributo data-visible=“false” se puede utilizar con JavaScript para controlar la visibilidad del título. - Dentro del fieldset, varios.Los elementos {Type}-wrapper (.text-wrapper y .password-wrapper en este caso) representan campos de formulario individuales dentro del panel.
- Cada contenedor contiene una etiqueta, un campo de entrada y una descripción, similares a los ejemplos anteriores.
Ejemplo de selectores CSS para componentes de panel/contenedor
- Segmentación del panel:
code language-css |
---|
|
- El selector
.panel-wrapper
aplica estilo a todos los elementos con el contenedor de paneles de clase, lo que proporciona un aspecto coherente a todos los paneles.
- Segmentación del título del panel:
code language-css |
---|
|
- El selector
.panel-wrapper legend
aplica estilos al elemento de leyenda del panel, lo que hace que el título se destaque visualmente.
- Segmentación de campos individuales dentro del panel:
code language-css |
---|
|
- El selector
.panel-wrapper .{Type}-wrapper
se dirige a todos los contenedores con la clase.{Type}-wrapper
dentro del panel, lo que le permite aplicar estilo al espaciado entre los campos del formulario.
- Segmentación de campos específicos (opcional):
code language-css |
---|
|
- Estos selectores opcionales le permiten segmentar contenedores de campo específicos dentro del panel para aplicar un estilo único, como resaltar el campo de nombre de usuario.
Estructura HTML de un panel repetible
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
Cada panel tiene la misma estructura que el ejemplo del panel único, con atributos adicionales:
-
data-repeatable="true": este atributo indica que el panel se puede repetir dinámicamente mediante JavaScript o un marco de trabajo.
-
ID y nombres únicos: cada elemento del panel tiene un ID único (por ejemplo, name-1, email-1) y un atributo de nombre basado en el índice del panel (por ejemplo, name="contacts[0].name"). Esto permite una recopilación de datos adecuada cuando se envían varios paneles.
Selectores CSS para un panel repetible
- Segmentación de todos los paneles repetibles:
code language-css |
---|
|
El selector aplica estilo a todos los paneles que se pueden repetir, lo que garantiza una apariencia uniforme.
- Segmentación de campos individuales dentro de un panel:
code language-css |
---|
|
Este selector aplica estilo a todos los contenedores de campo dentro de un panel repetible, manteniendo un espaciado coherente entre los campos.
- Segmentación de campos específicos (dentro de un panel):
code language-css |
---|
|
Estructura HTML para adjuntar archivos
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
- El atributo class utiliza el nombre proporcionado para el archivo adjunto (claim_form).
- Los atributos id y name del elemento de entrada coinciden con el nombre del archivo adjunto (claim_form).
- La sección de lista de archivos está vacía inicialmente. Se rellena dinámicamente con JavaScript cuando se cargan los archivos.
Selectores CSS para el componente Archivo adjunto
- Segmentación de todo el componente Archivo adjunto:
code language-css |
---|
|
Este selector aplica estilo a todo el componente archivo adjunto, incluida la leyenda, el área de arrastre, el campo de entrada y la lista.
- Elementos específicos de segmentación:
code language-css |
---|
|
Estos selectores permiten aplicar estilo a varias partes del componente de archivo adjunto de forma individual. Puede ajustar los estilos para que coincidan con sus preferencias de diseño.
Estilo de componentes
Puede aplicar estilo a los campos de formulario en función de su tipo específico ({Type}-wrapper
) o nombres individuales (field-{Name}
). Esto permite un control y una personalización más granulares del aspecto del formulario.
Puede utilizar selectores de CSS para segmentar tipos de campo específicos y aplicar estilos de forma coherente.
Estructura HTML
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
-
Cada campo está envuelto en un elemento
div
con varias clases:{Type}-wrapper
: identifica el tipo de campo. Por ejemplo,form-text-wrapper
,form-number-wrapper
yform-email-wrapper
.field-{Name}
: identifica el campo por su nombre. Por ejemplo:form-name
,form-age
yform-email
.field-wrapper
: una clase genérica para todos los contenedores de campo.
-
El atributo
data-required
indica si el campo es obligatorio u opcional. -
Cada campo tiene una etiqueta correspondiente, un elemento de entrada y posibles elementos adicionales como marcadores de posición y descripciones.
Ejemplo de selectores CSS
code language-css |
---|
|
También puede segmentar campos individuales por nombre para aplicar estilos únicos.
Estructura HTML
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
Ejemplo de selector de CSS
code language-css |
---|
|
Este CSS identifica todos los elementos de entrada que se encuentran dentro de un elemento que tiene la clase field-otp
. La estructura del formulario de Edge Delivery Services sigue las convenciones de bloque de formularios adaptables, donde los contenedores se marcan con clases específicas del campo como “field-top” para campos con el nombre “otp”.
Estructura e implementación de archivos CSS
Implementación de referencia
La referencia de estilo del formulario completo está disponible en el repositorio de elementos repetitivos de AEM Forms:
code language-none |
---|
|
Este archivo sirve como implementación canónica del sistema de propiedades personalizadas de CSS y proporciona la base para todo el estilo del formulario. Incluye definiciones completas para todas las variables de CSS, patrones de estilo de componentes e implementaciones de diseño interactivo.
En el proyecto de Edge Delivery Services, implemente el estilo de los formularios mediante este enfoque estructurado:
code language-none |
---|
|
Anulaciones de propiedades personalizadas de CSS: invalide las variables de formulario en los estilos globales para implementar temas específicos de la marca:
code language-css |
---|
|
Personalizaciones específicas de componentes:
Añada un estilo específico del componente y mantenga el sistema de variables de CSS:
code language-css |
---|
|
Integración de diseño interactivo: utilice propiedades personalizadas de CSS en consultas de medios para obtener un comportamiento interactivo coherente:
code language-css |
---|
|
Ejemplo de implementación de estilo completa
En esta sección se muestra cómo crear un formulario moderno con marca mediante propiedades personalizadas de CSS. La implementación se desglosa en subsecciones claras para facilitar la comprensión y navegación.
Defina la paleta de colores, el espaciado y la tipografía de su marca mediante propiedades personalizadas de CSS.
code language-css |
---|
|
Aplique un fondo moderno, un radio de borde y una sombra al contenedor de formularios para obtener un diseño visualmente atractivo.
code language-css |
---|
|
Defina un estilo limpio y moderno en los campos de entrada de texto, correo electrónico y número.
code language-css |
---|
|
Puede ampliar aún más el estilo del formulario segmentando campos, estados o componentes específicos según sea necesario. Consulte las secciones anteriores para ver patrones avanzados.
code language-css |
---|
|
Este completo enfoque muestra cómo las propiedades personalizadas de CSS permiten una temática sofisticada, a la vez que mantienen las funciones de integridad estructural y accesibilidad del sistema de bloques de formularios adaptables.
Solución de problemas de CSS
code language-css |
---|
|
code language-css |
---|
|
code language-css |
---|
|
code language-css |
---|
|
Prácticas recomendadas específicas de componentes
code language-css |
---|
|
code language-css |
---|
|
Resumen de las prácticas recomendadas
- Usar propiedades personalizadas de CSS: aproveche las variables para lograr una temática coherente
- Seguir arquitectura basada en bloques: use
.form
como selector de bloques principal - Evitar la especificidad excesiva: no use
main .form form
a menos que sea necesario - Contenedores de destino: use patrones
.{Type}-wrapper
para la segmentación de componentes - Mantener coherencia: utilice los mismos patrones de selector en todo el proyecto
- Realizar pruebas en todos los dispositivos: asegúrese de que los formularios funcionan bien en dispositivos móviles, tabletas y de escritorio
- Validar accesibilidad: asegúrese de que los estilos no interfieran con los lectores de pantalla ni con la navegación mediante el teclado