JavaScript Range.getBoundingClientRect() — координати діапазону
Метод getBoundingClientRect() повертає координати діапазону на екрані — прямокутник, що його охоплює.
Загальний опис
Це те, завдяки чому панель форматування виринає саме над виділеним текстом, а не в кутку екрана.
Координати рахуються від вікна, а не від документа. Тому для абсолютного позиціонування до них треба додати window.scrollY і window.scrollX.
- Нотатка
-
Виклик змушує браузер порахувати макет. У обробнику
автор: NagarDselectionchange, який б'є часто, це відчутно — обмежуй частоту.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| getBoundingClientRect | 1+ | 1+ | 1+ | 7+ | 12+ | 9+ |
| Переглядач | ||||
|---|---|---|---|---|
| getBoundingClientRect | yes | yes | yes | yes |
Приклади
+ запропонувати свій приклад у пісочниці
Панель форматування рівно над виділенням.
HTML
<p>Виділи цей текст</p>
<div id="panel" hidden style="position:absolute">Ж К П</div>
JS
document.addEventListener('selectionchange', () => {
const selection = window.getSelection();
const panel = document.getElementById('panel');
if (selection.isCollapsed) {
panel.hidden = true;
return;
}
const rect = selection.getRangeAt(0).getBoundingClientRect();
// координати від ВІКНА — додаємо прокрутку
panel.style.top = (rect.top + window.scrollY - 40) + 'px';
panel.style.left = (rect.left + window.scrollX) + 'px';
panel.hidden = false;
});
Коментарі
Коментарів ще немає — будьте першим!