Personalización del aspecto de los formularios
Los formularios son esenciales para la interacción de los usuarios en los sitios web, ya que les permite introducir datos. Puede utilizar Hojas de estilo en cascada (CSS) para aplicar estilo a los campos de un formulario, mejorar la presentación visual de los formularios y mejorar la experiencia del usuario.
El Bloque de formularios adaptables produce una estructura coherente para todos los campos de formulario. La estructura coherente facilita el desarrollo de selectores CSS para seleccionar y aplicar estilo a los campos de formulario en función del tipo de campo y de los nombres de campo.
Este documento describe la estructura del HTML para varios componentes de formulario y le ayuda a comprender cómo crear selectores CSS para varios campos de formulario y aplicar estilo a los campos de formulario de un Bloque de formularios adaptables.
Al final del artículo:
- Podrá comprender la estructura del archivo CSS predeterminado incluido con el bloque de formularios adaptables.
- Podrá comprender la estructura HTML de los componentes de formulario que proporciona el bloque de formularios adaptables, incluidos los componentes generales y específicos como los menús desplegables, los grupos de radio y los grupos de casillas de verificación.
- Aprenderá a aplicar estilo a los campos de formulario en función del tipo de campo y los nombres de campo mediante selectores CSS, lo que permitirá aplicar un estilo coherente o único en función de los requisitos.
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.
Estilo de un formulario para un Bloque de formularios adaptables
El Bloque de formularios adaptables ofrece una estructura de HTML estandarizada que simplifica el proceso de selección y estilo de los componentes del formulario:
-
Actualizar estilos predeterminados: puede modificar los estilos predeterminados de un formulario si edita
/blocks/form/form.css file
. Este archivo proporciona un estilo completo para un formulario, que admite formularios de asistente de varios pasos. Hace hincapié en el uso de variables CSS personalizadas para facilitar la personalización, el mantenimiento y el estilo uniforme en todos los formularios. Para obtener instrucciones sobre cómo añadir el Bloque de formularios adaptables al proyecto, consulte creación de un formulario. -
Personalización: utilice el valor predeterminado
forms.css
como base y personalícelo para modificar la apariencia de los componentes del formulario, lo que lo hace visualmente atractivo y fácil de usar. La estructura del archivo fomenta la organización y mantiene los estilos de los formularios, lo que promueve diseños coherentes en todo su sitio web.
Desglose de la estructura de forms.css
-
Variables globales: definidas en el nivel
:root
, estas variables (--variable-name
) almacenan los valores utilizados en toda la hoja de estilo para mantener la coherencia y facilitar las actualizaciones. Estas variables definen colores, tamaños de fuente, relleno y otras propiedades. Puede declarar sus propias variables globales o modificar las existentes para cambiar el estilo del formulario. -
Estilos de selector universal: el selector
*
coincide con todos los elementos del formulario, lo que garantiza que los estilos se apliquen a todos los componentes de forma predeterminada, incluida la configuración de la propiedadbox-sizing
enborder-box
. -
Estilo de formulario: esta sección se centra en el estilo de los componentes del formulario mediante selectores que apunten a elementos HTML específicos. Define estilos para campos de entrada, áreas de texto, casillas de verificación, botones de opción, entradas de archivo, etiquetas de formulario y descripciones.
-
Estilo del asistente (si corresponde): esta sección está dedicada a aplicar estilo al diseño del asistente, un formulario de varios pasos en el que cada paso se muestra de uno en uno. Define estilos para el contenedor del asistente, conjuntos de campos, leyendas, botones de navegación y diseños adaptables.
-
Consultas de medios: proporcionan estilos para diferentes tamaños de pantalla, ajustando el diseño y el estilo en consecuencia.
-
Estilo variado:: esta sección describe los estilos para los mensajes de éxito o error, las áreas de carga de archivos y otros elementos que pueden encontrarse en un formulario.
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.
Componentes generales (excepto menús desplegables, grupos de opciones y grupos de casillas de verificación):
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:
code language-html |
---|
|
-
Clases: el elemento div tiene varias clases para dirigirse a 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 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, generado automáticamente.
- {Required}: es un 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 |
---|
|
code language-css |
---|
|
.{Type}-wrapper
: segmenta el elementodiv
exterior basado en el tipo de campo. Por ejemplo,.text-wrapper
se dirige a todos los campos de texto..field-{Name}
: selecciona además el elemento en función del nombre de campo específico. Por ejemplo,.field-first-name
se dirige al campo de texto “Nombre”. Aunque este selector se puede utilizar para elementos de segmentación con la clase field-{Name}, es importante tener cuidado. En este caso específico, no sería útil para aplicar estilo a los campos de entrada porque se dirigiría no solo a la entrada en sí, sino también a los elementos de etiqueta y descripción. Se recomienda utilizar selectores más específicos como los que tiene para segmentar los campos de entrada de texto (entrada .text-wrapper).
Ejemplo de selectores CSS para componentes generales
code language-css |
---|
|
Componente desplegable
Para los menús desplegables, se utiliza el elemento select
en lugar de un elemento input
:
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
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.
Grupos de radio
Al igual que los componentes desplegables, los grupos de radio tienen su propia estructura HTML y estructura CSS:
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
- 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 |
---|
|
Grupos de casillas de verificación
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
-
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 /* 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 */ }
-
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 .radio-group-wrapper legend, .checkbox-group-wrapper legend { font-weight: bold; /* Makes the group label bold */ }
-
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 /* 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 */ }
-
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 /* 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 ... */ }
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 leyenda (
) 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.
- 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.
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.
- 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 |
---|
|
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.
- 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.
Estilo basado en el tipo de campo
Puede utilizar selectores de CSS para segmentar tipos de campo específicos y aplicar estilos de forma coherente.
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.
code language-css |
---|
|
Estilo basado en el nombre del campo
También puede segmentar campos individuales por nombre para aplicar estilos únicos.
code language-html |
---|
|
Ejemplo de estructura HTML
code language-html |
---|
|
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 HTML del formulario sigue las convenciones del bloque de formularios adaptables, lo que implica que hay un contenedor marcado con la clase “field-otp” que contiene el campo con el nombre “otp”.
Consulte también
- Introducción a Edge Delivery Services para AEM Forms
- Crear un formulario con Google Sheets o Microsoft Excel
- Configurar Google Sheets o los archivos de Microsoft Excel para empezar a aceptar datos
- Publicar el formulario y empezar a recopilar datos
- Personalizar el aspecto de los formularios
- Añadir secciones repetibles a un formulario
- Mostrar un mensaje de agradecimiento personalizado después del envío del formulario
- Componentes de bloque de formulario adaptable y sus propiedades