Driver.js — это библиотека для создания интерактивных пошаговых подсказок и туров по веб-интерфейсу. Одним из ключевых аспектов корректного отображения шагов является правильное определение размера экрана и области видимости элементов, на которые указывают подсказки. В Driver.js размер экрана влияет на позиционирование тултипов, подсветку элементов и адаптивность интерфейса.
window.innerWidth и window.innerHeight Эти свойства позволяют получить текущую ширину и высоту окна браузера в пикселях. Они учитывают только видимую область окна без полос прокрутки. Driver.js использует эти значения для расчета позиции тултипов относительно элементов интерфейса.
console.log(window.innerWidth); // ширина окна
console.log(window.innerHeight); // высота окнаdocument.documentElement.clientWidth и
clientHeight Альтернативный способ получения размеров видимой
области документа. В отличие от window.innerWidth, эти
свойства могут учитывать различия в отображении полос прокрутки в разных
браузерах.
const width = document.documentElement.clientWidth;
const height = document.documentElement.clientHeight;window.scrollX и window.scrollY Положение прокрутки по горизонтали и вертикали необходимо для корректного вычисления позиции элемента относительно видимой области. Driver.js учитывает эти значения при расчете смещения тултипов, чтобы подсказки оставались на экране при скролле страницы.
const scrollLeft = window.scrollX;
const scrollTop = window.scrollY;Driver.js строит подсказку на основе координат элемента:
const element = document.querySelector('.target');
const rect = element.getBoundingClientRect();
const elementPosition = {
top: rect.top + window.scrollY,
left: rect.left + window.scrollX,
width: rect.width,
height: rect.height
};
rect.top и rect.left — координаты элемента
относительно видимой области окна.window.scrollY и window.scrollX
переводит координаты в абсолютные значения страницы, что необходимо для
позиционирования подсветки.Driver.js поддерживает автоматическую адаптацию тултипов при
изменении размеров окна. Для этого используется слушатель события
resize:
window.addEventListener('resize', () => {
driver.reset(); // пересчитывает позиции всех шагов
driver.start(); // запускает тур заново с обновленными координатами
});
Это позволяет корректно отображать подсказки при смене ориентации устройства или изменении размера окна браузера.
На мобильных экранах важно учитывать динамическую высоту адресной строки браузера и возможные панели инструментов. Для корректного позиционирования используется комбинация:
const viewportHeight = window.innerHeight || document.documentElement.clientHeight;
const viewportWidth = window.innerWidth || document.documentElement.clientWidth;
Driver.js адаптирует подсказки, чтобы они оставались видимыми при вращении экрана и появлении клавиатуры.
Перед отображением подсказки Driver.js вычисляет, помещается ли элемент целиком в видимой области:
function isElementInViewport(el) {
const rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
);
}
Если элемент не полностью виден, библиотека автоматически скроллит страницу к элементу, используя плавную анимацию:
element.scrollIntoView({ beh * avior: 'smooth', block: 'center' });
Для больших экранов или масштабируемых интерфейсов Driver.js позволяет задавать максимальную ширину и высоту тултипа, чтобы не нарушать читаемость. Используются параметры:
maxWidth — максимальная ширина подсказки в
пикселях.maxHeight — максимальная высота подсказки.Эти значения позволяют предотвратить выход подсказки за пределы экрана, особенно на устройствах с высокой плотностью пикселей или при масштабировании интерфейса.
Размер экрана в Driver.js напрямую влияет на позиционирование подсказок, видимость элементов и адаптивность интерфейса. Использование встроенных методов JavaScript для определения ширины, высоты и позиции прокрутки обеспечивает точное отображение интерактивного тура на любых устройствах.