В библиотеке Popper.js константы и перечисления
(enums) играют ключевую роль при конфигурации поведения
попперов и их модификаторов. Они позволяют задавать предопределённые
значения для свойств, обеспечивая корректное позиционирование элементов
на странице и упрощая управление логикой смещения, ограничения и
смарт-позиционирования.
Placement –
направление поппераКонстанта Placement определяет, где будет располагаться
поппер относительно reference element. В Popper.js
значения placement представлены как строки и допускают
комбинированные варианты с направлением и вариациями.
Возможные значения:
Основные направления:
"top""bottom""left""right"Вариации с выравниванием:
"top-start" и "top-end""bottom-start" и "bottom-end""left-start" и "left-end""right-start" и "right-end"Особенности использования:
"start" выравнивает поппер по левому или верхнему краю
reference element в зависимости от направления."end" выравнивает по правому или нижнему краю.Пример использования в конфигурации:
const popperInstance = Popper.createPopper(referenceElement, popperElement, {
placement: 'bottom-start',
});
ModifierPhases
– фазы работы модификаторовКаждый модификатор в Popper.js выполняется в определённой фазе
жизненного цикла. Перечисление ModifierPhases помогает
корректно указывать фазу выполнения модификатора.
Доступные фазы:
"beforeRead" – выполняется до чтения размеров
элементов."read" – фаза, где вычисляются размеры reference и
popper."afterRead" – после чтения размеров, до модификации
данных."beforeMain" – подготовительная фаза перед основной
логикой модификатора."main" – основная фаза работы модификатора."afterMain" – после основной логики модификатора, для
доработки данных."beforeWrite" – подготовка данных перед записью в
DOM."write" – фаза непосредственной записи изменений в
DOM."afterWrite" – финальная фаза после всех
изменений.Пример создания кастомного модификатора с фазой:
const customModifier = {
name: 'logPlacement',
phase: 'afterWrite', // Используем константу ModifierPhases.afterWrite
fn({ state }) {
console.log('Текущее положение:', state.placement);
},
};
Boundary –
ограничения для поппераPopper.js позволяет ограничивать область, в которой может
отображаться popper, через параметр boundary. Константа
Boundary определяет варианты ограничения.
Основные значения:
"clippingParents" – поппер не выходит за пределы
ближайших родительских элементов с overflow, которые обрезают
содержимое."viewport" – поппер не выходит за границы видимой
области окна."window" – учитывает весь window объект для
ограничения.Пример использования:
const popperInstance = Popper.createPopper(referenceElement, popperElement, {
modifiers: [{
name: 'preventOverflow',
options: {
boundary: 'viewport',
},
}],
});
Strategy –
стратегия позиционированияСтратегия позиционирования определяет, каким образом Popper.js будет вычислять координаты popper-элемента.
Доступные значения:
"absolute" – стандартное абсолютное позиционирование
относительно ближайшего позиционированного предка."fixed" – фиксированное позиционирование относительно
окна браузера.Используется в конфигурации Popper.js:
const popperInstance = Popper.createPopper(referenceElement, popperElement, {
strategy: 'fixed',
});
Offset – смещение
поппераСмещение поппера относительно reference element может задаваться как константа или функция.
Форматы значения offset:
Массив [skidding, distance]
skidding – смещение по основной оси (горизонталь или
вертикаль в зависимости от placement)distance – смещение по перпендикулярной осиФункция с аргументом state, возвращающая массив
[skidding, distance]
Пример:
const popperInstance = Popper.createPopper(referenceElement, popperElement, {
modifiers: [
{
name: 'offset',
options: {
offset: [0, 10], // 10px от основной оси
},
},
],
});
| Enum/Константа | Назначение | Примеры значений |
|---|---|---|
Placement |
Позиция поппера относительно reference | "top", "bottom-end" |
ModifierPhases |
Фазы работы модификатора | "beforeRead", "write" |
Boundary |
Область ограничения popper | "viewport", DOM-элемент |
Strategy |
Тип позиционирования | "absolute", "fixed" |
Offset |
Смещение поппера | [0, 10] или функция |
Эти константы обеспечивают предсказуемое и безопасное поведение Popper.js, позволяют создавать гибкие и кастомизированные интерфейсы, управлять позиционированием и предотвращать конфликт с элементами страницы.