Воспроизведите scrollIntoView с чем-то похожей функцией чистого javascript - PullRequest
0 голосов
/ 06 октября 2018

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

У меня ошибка при использовании scrollIntoView в сафари.Частично поддерживается многими браузерами только в Chrome и Mozilla. Работает https://caniuse.com/#feat=scrollintoview

Еще одна проблема при использовании в обоих smooth местах - это анимация с прерываниями.

Моя попытка:

const scrollToBottom = () => {
     const elements = document.querySelectorAll(`[data-elementid='${action.payload.id}']`);

     elements.forEach((element) => {
         const menuContainer = element.parentElement.parentElement.offsetHeight;
         const elementsHeight = element.offsetTop;

         if (elementsHeight > menuContainer) {
             element.scrollIntoView({
                 behavior: 'smooth',
                 block: 'end',
             });
         }
     });
};

setTimeout(scrollToBottom, 200);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...