Generador de Formularios CSS
Los formularios son la parte más tocada de la mayoría de los sitios y la menos pulida de muchos. Este generador produce el CSS de un formulario completo con estilo: una cuadrícula de formulario adaptable, pares de etiqueta + entrada, áreas de texto, selectores y estados de foco visibles, todo con un estilo visual coherente. Elige el color de acento, el radio de las esquinas y la separación, y copia la hoja de estilos. El CSS conserva la semántica nativa del formulario, por lo que la validación, el uso del teclado y los lectores de pantalla funcionan.
Cómo usar el generador
-
1
Elige el color de acento
El color de acento define el anillo de foco y el color del borde de cada campo.
-
2
Elige el radio de las esquinas
El radio se aplica a entradas, áreas de texto y selectores para que todos compartan la misma forma.
-
3
Ajusta la separación
La separación controla el espacio vertical entre los campos de la cuadrícula.
-
4
Copia el CSS
Una hoja de estilos completa que puedes pegar y adaptar sin tocar tu HTML.
El formulario base
<form class="form">
<label class="field">
<span class="field-label">Correo electrónico</span>
<input type="email" required>
<span class="field-error">Por favor, introduce un correo electrónico válido.</span>
</label>
<label class="field">
<span class="field-label">Contraseña</span>
<input type="password" minlength="8" required>
</label>
<button type="submit" class="button">Registrarse</button>
</form>
.field {
display: block;
margin-bottom: 1.25rem;
}
.field-label {
display: block;
font-weight: 500;
margin-bottom: .25rem;
}
.field input {
width: 100%;
padding: .5rem .75rem;
font: inherit;
border: 1px solid #d1d5db;
border-radius: 6px;
background: #fff;
transition: border-color 120ms, box-shadow 120ms;
}
.field input:focus-visible {
outline: none;
border-color: #2563eb;
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}
.field input:invalid:not(:placeholder-shown) {
border-color: #dc2626;
}
.field-error { display: none; color: #dc2626; font-size: .875rem; margin-top: .25rem; }
.field input:invalid:not(:placeholder-shown) ~ .field-error { display: block; }
Cuatro estilos comunes
| Estilo | Qué es | Mejor para |
|---|---|---|
| Contorneado | Borde alrededor de la entrada, fondo transparente | Formularios de escritorio, diseños densos |
| Subrayado | Solo un borde inferior | UI minimalista / editorial |
| Relleno | Fondo gris, sin borde | UI inspirada en Material Design |
| Etiqueta flotante | La etiqueta se sitúa dentro, anima hacia arriba al foco/valor | Móvil primero, páginas de aterrizaje |
La etiqueta flotante es la más bonita pero requiere marcado adicional o JavaScript para detectar el estado vacío. El contorneado es el más universal.
Lista de verificación de accesibilidad
- Etiqueta visible para cada entrada. Nunca uses un placeholder como la única etiqueta, desaparece al enfocar y falla en contraste.
<label for>o envolviendo<label>. Ambos son válidos; envolver es un poco más fácil.- Indicador de foco. Nunca
outline: nonesin un reemplazo. Los usuarios de teclado lo necesitan. - Mensajes de error: enlázalos a través de
aria-describedbyen la entrada. No uses solo color para marcar errores, incluye un mensaje de texto o icono. - Campos requeridos: usa el atributo
required. Agrega un marcador visual (asterisco) en la etiqueta para usuarios videntes. - Tipos de entrada: usa
type="email",type="tel",type="url",type="number". Los teclados móviles se adaptan. - Atributos
autocomplete:autocomplete="email",autocomplete="current-password", etc. Ahorra mucho tecleo a los usuarios.
Estados de validación nativos
CSS tiene pseudo-clases para la validez del formulario:
:required/:optional:valid/:invalid:in-range/:out-of-range(para entradas numéricas con min/max):placeholder-shown(vacío, placeholder visible):user-invalid(inválido y el usuario ha interactuado, el correcto para estilos de error)
La pseudo-clase :user-invalid es la forma más limpia de mostrar errores solo después de que el usuario ha hecho algo, evitando bordes rojos antes de la interacción. El soporte llegó a todos los principales alrededor de 2023.
Estado deshabilitado
.field input:disabled {
background: #f3f4f6;
color: #9ca3af;
cursor: not-allowed;
}
Las entradas deshabilitadas no son enfocables ni enviables. Si deseas que sean enfocables para lectores de pantalla, usa readonly en su lugar, el formulario envía el valor pero el usuario no puede editarlo.
Preguntas frecuentes
No. Los placeholders desaparecen tan pronto como el usuario escribe, por lo que no pueden servir como etiquetas. Además, el texto del placeholder típicamente tiene bajo contraste y falla en WCAG. Usa una etiqueta visible más un placeholder opcional para sugerencias de formato.
Porque :invalid se aplica inmediatamente a los campos requeridos vacíos. Usa :user-invalid (consciente de la interacción) o combina :invalid:not(:placeholder-shown) como solución alternativa en navegadores más antiguos.
Establece appearance: none, elimina la flecha predeterminada, agrega la tuya a través de una imagen de fondo o un span envolvente con una flecha de pseudo-elemento. Las listas de opciones dentro permanecen estilizadas por el SO y no se pueden personalizar con CSS.
Ambos. La validación HTML (required, type, pattern) captura casos simples sin JavaScript. JavaScript maneja reglas complejas (fuerza de contraseña, dependencias entre campos). Siempre valida en el servidor también, la validación del lado del cliente es para UX, no para seguridad.
Herramientas relacionadas
Referencia de la tabla ASCII
Tabla ASCII completa del 0 al 127 con decimal, hex, octal, binario y referencia numérica HTML para cada carácter, incluidos los códigos de control como NUL, LF y DEL.
Referencia de caracteres HTML
Lista buscable de entidades HTML, sus códigos nombrados y numéricos, y una copia con un clic para caracteres y símbolos especiales.
Generador de letras aleatorias
Genera letras aleatorias A-Z. Elige la cantidad, usa mayúsculas, minúsculas o mezcla de ambas, y aplica el resultado en juegos, consignas o clase.
Referencia de atajos de teclado
Busca los atajos predeterminados documentados de VS Code, Chrome y Bash con GNU Readline en macOS, Windows y Linux.
Formateador de JSON
Pega JSON para verlo con sangría de 2 o 4 espacios, minificarlo en una salida compacta o comprobar rápidamente la sintaxis antes de copiar el resultado.
Generador de Paletas de Color
Genera paletas monocromáticas, análogas, complementarias, triádicas o tetrádicas desde un color base HEX y exporta variables CSS listas para copiar.