El Atributo POPOVER

Es parte de la API de Popover introducida en HTML para crear elementos emergentes de forma nativa.
El atributo popover
es parte de la API de Popover introducida en HTML para crear elementos emergentes (como ventanas modales, menús o mensajes) de forma nativa, sin necesidad de JavaScript complejo o bibliotecas externas. A continuación, aprenderás cómo implementarlo y personalizarlo.
1. Introducción al atributo popover
-
Propósito: Mostrar contenido emergente que se superpone a la página, como:
-
Ventanas modales.
-
Menús contextuales.
-
Mensajes de confirmación.
-
-
Ventajas:
-
Control nativo del navegador (mejor rendimiento y accesibilidad).
-
Integración con la gestión de focos y teclado.
-
Cierre automático al interactuar fuera del popover.
-
-
Compatibilidad:
-
Funciona en Chrome 114+, Edge 114+, Safari 17.4+ y Firefox 121+.
-
Verifica caniuse para actualizaciones.
-
2. Tipos de popovers
El atributo popover
admite dos tipos:
-
popover="auto"
: Se cierra automáticamente al hacer clic fuera del popover o presionarESC
. -
popover="manual"
: Requiere cerrarse explícitamente (ideal para interacciones complejas).
3. Sintaxis básica
Paso 1: Definir el popover
<div id="miPopup" popover="auto"> <!-- o "manual" --> <h3>¡Hola!</h3> <p>Este es un popover nativo de HTML.</p> </div>
Paso 2: Botón para activar/desactivar
<button popovertarget="miPopup">Mostrar popover</button>
-
popovertarget
: Vincula el botón al popover usando suid
. -
El botón alternará entre mostrar/ocultar el popover automáticamente.
4. Ejemplos prácticos
Ejemplo 1: Popover simple (auto)
<button popovertarget="demo1">Mostrar mensaje</button> <div id="demo1" popover="auto"> <p>¿Estás seguro de realizar esta acción?</p> <button onclick="demo1.hidePopover()">Cerrar</button> </div>
Ejemplo 2: Popover manual con JavaScript
<button onclick="abrirPopup()">Abrir manualmente</button> <div id="demo2" popover="manual"> <p>Contenido personalizado.</p> <button onclick="cerrarPopup()">Cerrar</button> </div> <script> function abrirPopup() { demo2.showPopover(); // Muestra el popover } function cerrarPopup() { demo2.hidePopover(); // Oculta el popover } </script>
5. Estilizar el popover con CSS
Los popovers tienen estilos predeterminados, pero puedes personalizarlos:
/* Estilo general para todos los popovers */ [popover] { background-color: white; border: 2px solid #333; padding: 20px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); } /* Fondo oscuro detrás del popover (backdrop) */ [popover]::backdrop { background-color: rgba(0,0,0,0.5); }
6. Métodos y eventos de la API
-
Métodos:
-
showPopover()
: Muestra el popover. -
hidePopover()
: Oculta el popover. -
togglePopover()
: Alterna entre mostrar y ocultar.
-
-
Eventos:
-
beforetoggle
: Se dispara antes de que el popover cambie de estado. -
toggle
: Se dispara después del cambio.
-
<div id="eventDemo" popover="auto">Popover con eventos</div> <script> const popover = document.getElementById("eventDemo"); popover.addEventListener("beforetoggle", (e) => { console.log(`Estado: ${e.newState}`); // "open" o "closed" }); </script>
7. Buenas prácticas
-
Accesibilidad:
-
Usa
aria-labelledby
oaria-label
para describir el popover. -
Asegúrate de que el foco se maneje correctamente (el navegador lo hace automáticamente).
-
-
Contenido:
-
Mantén el contenido del popover breve.
-
Evita anidar popovers dentro de otros popovers.
-
-
Fallback:
-
Proporciona un mensaje o alternativa para navegadores que no soportan la API.
-
8. Conclusión
El atributo popover
simplifica la creación de componentes emergentes en HTML, ofreciendo una solución ligera y accesible. Es ideal para:
-
Mensajes de confirmación.
-
Formularios contextuales.
-
Menús de opciones.
¡Importante! Combínalo con JavaScript para casos avanzados y siempre prueba en múltiples navegadores. Experimenta con estilos y eventos para crear experiencias únicas.