popperOffsets
en Popper.js?
popperOffsets
es un modifier de Popper.js que proporciona las coordenadas calculadas del popper en relación con su referencia. Aunque por defecto estas coordenadas se calculan automáticamente, este modifier te permite manipularlas directamente para ajustar la posición del popper según necesidades específicas, como alineación personalizada o desplazamientos no estándar.
popperOffsets
Para ajustar manualmente las coordenadas del popper, puedes crear un modifier personalizado que modifique los valores predeterminados de popperOffsets
. A continuación, se muestra un ejemplo:
const popperInstance = Popper.createPopper(referenceElement, popperElement, {
modifiers: [
{
name: 'popperOffsets',
enabled: true,
phase: 'main', // Se ejecuta en la fase principal
fn({ state }) {
// Ajuste manual de las coordenadas
state.modifiersData.popperOffsets.x += 10; // Desplaza 10px en el eje X
state.modifiersData.popperOffsets.y += 20; // Desplaza 20px en el eje Y
}
}
]
});
En este ejemplo:
popper
se desplaza 10px hacia la derecha y 20px hacia abajo, partiendo de las coordenadas calculadas automáticamente por Popper.js.
popperOffsets
Popper.js organiza el ciclo de vida de los poppers en varias fases, y el modifier
de popperOffsets
generalmente se ejecuta en la fase main
, donde se realizan ajustes clave de posicionamiento.
main
: Es la fase más utilizada para aplicar ajustes a la posición del popper. Aquí es donde puedes realizar cambios manuales después de que las posiciones automáticas hayan sido calculadas.
Puedes usar popperOffsets
junto con otros modifiers como flip
para ajustar la posición dinámica del popper según el espacio disponible en la ventana del navegador:
const popperInstance = Popper.createPopper(referenceElement, popperElement, {
modifiers: [
{
name: 'popperOffsets',
enabled: true,
phase: 'main',
fn({ state }) {
const viewportWidth = window.innerWidth;
// Si el viewport es pequeño, desplaza más el popper
if (viewportWidth < 600) {
state.modifiersData.popperOffsets.x += 15;
state.modifiersData.popperOffsets.y += 30;
}
}
},
{ name: 'flip', enabled: true } // Ajusta el popper si no hay espacio
]
});
popperOffsets
Para más detalles sobre cómo usar popperOffsets
, consulta la documentación oficial de Popper.js.
Jorge García
Fullstack developer