Popper.js — это библиотека для позиционирования всплывающих элементов относительно других элементов на странице. Для минимальной конфигурации достаточно подключить библиотеку через npm или CDN.
Через npm:
npm install @popperjs/core
Через CDN:
<script src="https://unpkg.com/@popperjs/core@2"></script>
После подключения Popper.js можно создавать простейшие попперы с минимальными настройками.
Для базовой конфигурации требуется три вещи:
Popper.createPopper() с обязательными параметрами.Пример минимальной конфигурации:
<button id="button">Кнопка</button>
<div id="tooltip">Подсказка</div>
<script>
const button = document.getElementById('button');
const tooltip = document.getElementById('tooltip');
const popperInstance = Popper.createPopper(button, tooltip);
</script>
В этом примере поппер появится рядом с кнопкой, используя значения по умолчанию: placement = “bottom”, strategy = “absolute”.
1. placement – позиция поппера относительно reference element. Возможные значения:
topbottomleftrightauto – автоматический выбор лучшей позицииЕсли параметр не указан, Popper.js по умолчанию устанавливает
bottom.
const popperInstance = Popper.createPopper(button, tooltip, {
placement: 'top',
});
2. strategy – способ позиционирования поппера. Возможные варианты:
absolute – элемент позиционируется относительно
ближайшего предка с position: relative/absolutefixed – элемент фиксирован на экране, игнорируя
прокруткуconst popperInstance = Popper.createPopper(button, tooltip, {
strategy: 'fixed',
});
3. modifiers – массив объектов для расширения функционала. В минимальной конфигурации можно использовать пустой массив или пропустить.
const popperInstance = Popper.createPopper(button, tooltip, {
modifiers: [],
});
Popper.js отвечает только за позиционирование, но не за отображение. Для базового сценария часто используют CSS:
#tooltip {
background-color: black;
color: white;
padding: 5px 10px;
border-radius: 4px;
display: none;
}
#tooltip.show {
display: block;
}
И JavaScript для показа/скрытия:
button.addEventListener('mouseenter', () => {
tooltip.classList.add('show');
popperInstance.update();
});
button.addEventListener('mouseleave', () => {
tooltip.classList.remove('show');
});
Метод popperInstance.update() гарантирует корректное
позиционирование после изменения видимости.
Для минимальной конфигурации можно подключить базовые модификаторы:
const popperInstance = Popper.createPopper(button, tooltip, {
modifiers: [
{
name: 'offset',
options: {
offset: [0, 8], // сдвиг по горизонтали и вертикали
},
},
],
});
const popperInstance = Popper.createPopper(button, tooltip, {
modifiers: [
{
name: 'preventOverflow',
options: {
padding: 5,
},
},
],
});
В минимальной конфигурации эти модификаторы не обязательны, но позволяют сделать поппер более стабильным при скролле и изменении размеров окна.
Даже при минимальной настройке доступны следующие методы:
popperInstance.update() – пересчитать позицию
поппераpopperInstance.destroy() – удалить поппер и очистить
слушателиpopperInstance.setOptions(options) – изменить
конфигурацию на летуПример динамического изменения позиции:
popperInstance.setOptions({
placement: 'left',
});
popperInstance.update();
Минимальная конфигурация Popper.js включает в себя только
reference element, popper element и вызов
Popper.createPopper(). По умолчанию используются
placement: 'bottom' и strategy: 'absolute'.
Дополнительные модификаторы и управление видимостью позволяют
адаптировать поведение попперов под любые интерфейсы, но для базового
всплывающего элемента этого достаточно.