Как перейти к элементу на странице, который имеет фиксированный заголовок при нажатии на строку таблицы? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть страница с фиксированным заголовком. На этой странице у меня есть таблица, которая имеет функциональность, которая при щелчке по строке, страница прокручивается до этого элемента. Каждая строка таблицы имеет идентификатор, соответствующий идентификатору элемента. Итак, по щелчку я получаю идентификатор элемента и затем выполняю эту функцию

element.scrollIntoView({block: 'start', behavior: 'smooth'})

Проблема с этим подходом состоит в том, что прокрутка заходит слишком далеко, и некоторая часть элемента скрыта под фиксированным заголовком. Я посмотрел на множество решений по переполнению стека, но ни одно из них не помогло мне. Я хочу, чтобы прокрутка заканчивалась на вершине элемента.

Итак, я попытался использовать

element.scrollTo({top: element.offsetTop, behavior: 'smooth})

Я сделал несколько вычислений, например, рассмотрел отступы / margin и заставил их работать. Проблема в том, что offsetTop отличается на разных устройствах. Приведенный выше лог c не работает для мобильных устройств и планшетов. offsetTop - это расстояние текущего элемента относительно вершины offsetParent, которое не будет одинаковым для каждого устройства.

Я знаю, что scrollIntoView будет моей лучшей ставкой, но не уверен, как предотвратить элемент от прокрутки под фиксированным заголовком. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 12 марта 2020

Я немного проверил и исследовал, и, возможно, это то, что вам нужно.

const position = element.getBoundingClientRect().top + window.pageYOffset - header.clientHeight;

window.scrollTo({ top: position, behavior: 'smooth'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...