Floating UI — это современная библиотека для управления позиционированием всплывающих элементов, таких как тултипы, дропдауны и модальные окна. Для быстрого подключения без использования сборщиков модулей можно использовать CDN.
CDN предоставляет готовую версию библиотеки в виде UMD-модуля. Для
подключения достаточно вставить тег <script> в
HTML-документ:
<script src="https://cdn.jsdelivr.net/npm/@floating-ui/dom@2.13.0/dist/floating-ui.dom.min.js"></script>
После подключения библиотека становится доступна глобально через
объект FloatingUIDOM. Этот объект содержит все необходимые
функции для работы с позиционированием.
Для уверенности, что библиотека загружена корректно, можно вывести её версию:
<script>
console.log(FloatingUIDOM.version);
</script>
Если в консоли отобразится версия, значит библиотека доступна и готова к использованию.
Floating UI включает несколько ключевых модулей, которые позволяют управлять позиционированием и поведением всплывающих элементов:
Пример подключения и использования через CDN:
<div id="button">Нажми меня</div>
<div id="tooltip" style="position:absolute;">Всплывающая подсказка</div>
<script>
const button = document.getElementById('button');
const tooltip = document.getElementById('tooltip');
button.addEventListener('mouseenter', async () => {
const { x, y } = await FloatingUIDOM.computePosition(button, tooltip, {
middleware: [
FloatingUIDOM.offset(8),
FloatingUIDOM.flip(),
FloatingUIDOM.shift({ padding: 5 })
],
});
Object.assign(tooltip.style, {
left: `${x}px`,
top: `${y}px`,
});
});
button.addEventListener('mouseleave', () => {
tooltip.style.left = '-9999px';
tooltip.style.top = '-9999px';
});
</script>
В этом примере computePosition рассчитывает оптимальные
координаты для всплывающего элемента, учитывая смещение, возможный
переворот и смещение внутри видимой области.
FloatingUIDOM.<script src="https://cdn.jsdelivr.net/npm/@floating-ui/dom@2.13.0/dist/floating-ui.dom.min.js"></script>
CDN-версия позволяет подключать модификаторы и расширения без
установки через npm. Например, можно использовать готовый модификатор
autoPlacement, который автоматически выбирает сторону для
отображения:
FloatingUIDOM.computePosition(button, tooltip, {
middleware: [FloatingUIDOM.autoPlacement()]
});
Для динамических элементов, которые появляются и исчезают по событию, важно правильно очищать стиль позиции, чтобы всплывающий элемент не оставался в неправильном положении после скрытия. Это особенно важно при работе через CDN, где нет системы сборки и модульного импорта, автоматически управляющей зависимостями.
Использование Floating UI через CDN обеспечивает быстрый старт и простую интеграцию в проекты без сборщиков, при этом остаётся доступен весь функционал позиционирования и гибкая настройка поведения всплывающих элементов.