La Etiqueta BUTTON

Permite crear botones interactivos en una página web para ejecutar acciones, enviar formularios o activar funciones de JavaScript.
La etiqueta <button>
permite crear botones interactivos en una página web para ejecutar acciones, enviar formularios o activar funciones de JavaScript. Es fundamental para la interacción del usuario y debe usarse de manera semántica y accesible.
Sintaxis básica
<button type="button|submit|reset">Texto del botón</button>
Atributos clave:
-
type
: Define el comportamiento del botón (obligatorio para evitar comportamientos inesperados).-
submit
: Envía un formulario (valor por defecto si no se especifica). -
reset
: Restablece los campos de un formulario. -
button
: Acción personalizada (requiere JavaScript).
-
-
disabled
: Desactiva el botón (<button disabled>
).
Casos de uso comunes
Botón de acción genérica (JavaScript)
<button type="button" onclick="alert('¡Hola!')">Haz clic</button>
Envío de formularios
<form id="miFormulario"> <input type="text" name="email"> <button type="submit">Enviar</button> </form>
Botón de reinicio
<form> <input type="text" value="Texto inicial"> <button type="reset">Restablecer</button> </form>
Atributos avanzados
Atributo | Descripción |
---|---|
form |
Vincula el botón a un formulario externo por su id |
formaction |
URL alternativa para enviar el formulario (solo type="submit" ) |
formmethod |
Método HTTP alternativo (GET , POST , etc.) |
autofocus |
Enfoca el botón al cargar la página |
aria-label |
Texto descriptivo para accesibilidad (si el botón solo tiene iconos) |
Accesibilidad
Texto claro:
Evita textos ambiguos como "Hacer clic aquí".
Enfoque visual:
Asegura que el botón tenga un estilo de :focus
visible.
Ejemplo accesible:
<button type="button" aria-label="Cerrar ventana"> <span aria-hidden="true">×</span> </button>
Estilización con CSS
Personaliza la apariencia:
button { background: #3498db; color: white; border: none; padding: 12px 24px; border-radius: 4px; cursor: pointer; transition: background 0.3s; } button:hover { background: #2980b9; } button:disabled { background: #95a5a6; cursor: not-allowed; }
Errores comunes
Olvidar el atributo type
<!-- ¡Podría enviar un formulario accidentalmente! --> <button>Botón peligroso</button>
Usar <div>
o <a>
como botones
<!-- Incorrecto --> <div onclick="accion()">Falso botón</div> <a role="button">Enlace disfrazado</a>
<!-- Correcto --> <button type="button">Botón real</button>
Ignorar estados de interacción
<!-- Sin estilo para hover o focus --> <button style="background: blue;">Botón plano</button>
Ejemplos avanzados
Botón con icono y texto
<button type="button"> <img src="icono-descarga.svg" alt="" aria-hidden="true"> Descargar PDF </button>
Botón asociado a formulario externo
<form id="formExterno"></form> <!-- Botón fuera del formulario --> <button type="submit" form="formExterno">Guardar</button>
Botón de carga (spinner)
<button type="button" id="cargando"> <span class="texto">Enviar</span> <span class="spinner" hidden></span> </button> <script> document.getElementById('cargando').addEventListener('click', function() { this.querySelector('.texto').hidden = true; this.querySelector('.spinner').hidden = false; this.disabled = true; }); </script>
Buenas prácticas
-
Semántica: Usa
<button>
para acciones,<a>
para navegación. -
Seguridad: Valida datos antes de procesar acciones en el backend.
-
Rendimiento: Evita múltiples clics con
disabled
durante procesos asíncronos. -
Internacionalización: Usa
lang
y traduce textos para sitios multilingües.
Comparación: <button>
vs <input type="button">
Característica | <button> |
<input type="button"> |
---|---|---|
Contenido interno | Permite HTML (texto, imágenes) | Solo texto (value ) |
Flexibilidad CSS | Mayor control de estilo | Limitado |
Accesibilidad | Mejor soporte ARIA | Menos opciones |
Uso recomendado | Acciones complejas | Casos simples sin formato especial |
Conclusión:
La etiqueta <button>
es esencial para crear interfaces interactivas y accesibles. Recuerda:
- Definir siempre el
type
. - Priorizar la accesibilidad con ARIA y texto descriptivo.
- Usar CSS para una experiencia visual coherente.
¡Transforma tus acciones web en experiencias intuitivas y profesionales!