Floating UI предоставляет встроенный debug режим,
который позволяет визуально отслеживать расчёт позиционирования
элементов, обнаруживать проблемы с смещением и взаимодействием с
границами. Он особенно полезен при сложных комбинациях
middleware, где поведение элементов не всегда очевидно.
Для активации debug режима используется параметр debug
при создании позиции:
import { computePosition } from '@floating-ui/dom';
const reference = document.querySelector('#button');
const floating = document.querySelector('#tooltip');
computePosition(reference, floating, {
placement: 'top',
middleware: [offset(10), flip(), shift()],
debug: true
});
При включении debug: true библиотека добавляет
вспомогательные визуальные элементы, которые
показывают:
reference и floating
элементов,Floating UI совместим с отдельным инструментом Floating UI DevTools, который позволяет детально просматривать вычисленные позиции элементов в реальном времени. DevTools отображает:
x и y для floating
элемента,flip,
shift, offset, arrow.Подключение DevTools выглядит следующим образом:
import { enableDevTools } from '@floating-ui/dom';
enableDevTools({
reference,
floating
});
После вызова на странице появится оверлей с визуальными индикаторами, который автоматически обновляется при изменении позиции или размера элементов.
Debug режим позволяет увидеть поэтапное влияние каждого middleware:
Для сложных интерфейсов полезно активировать debug только на отдельных элементах, чтобы визуально не перегружать страницу.
По умолчанию Floating UI добавляет базовые цветные рамки и линии. Для
более тонкой настройки можно использовать
CSS-селекторы, привязанные к классам
.floating-ui-debug:
.floating-ui-debug-reference {
border: 2px dashed blue;
}
.floating-ui-debug-floating {
border: 2px dashed red;
}
.floating-ui-debug-arrow {
background-color: yellow;
width: 4px;
height: 4px;
}
Эта кастомизация позволяет создавать визуально понятные схемы для сложных UI-компонентов.
Помимо визуализации, debug режим позволяет логировать координаты и состояние элементов:
computePosition(reference, floating, {
placement: 'bottom',
middleware: [offset(10), flip()],
debug: {
log: true
}
}).then(({ x, y }) => {
console.log('Floating coordinates:', x, y);
});
Параметр log: true выводит детализированные сообщения
для каждого middleware, что упрощает поиск ошибок и проверку
корректности смещений.
Debug режим особенно полезен в динамических интерфейсах, где размеры и позиции элементов меняются при взаимодействии с пользователем:
floating,Использование debug режима совместно с DevTools позволяет в реальном времени отслеживать все изменения, предотвращая баги с наложением и обрезанием элементов.
position: fixed важно учитывать, что
визуальные индикаторы могут не совпадать с реальными координатами при
масштабировании страницы.strategy: 'fixed' или
strategy: 'absolute' для проверки корректного поведения в
разных сценариях.Debug режим Floating UI превращает процесс позиционирования сложных интерфейсов в наглядный и управляемый, позволяя разработчикам точно понимать, как каждый middleware влияет на итоговое расположение элементов.