За последние 24 часа нас посетили 22936 программистов и 1265 роботов. Сейчас ищут 785 программистов ...

Scroll колесиком мышки до определенного DOM элемента.

Тема в разделе "JavaScript и AJAX", создана пользователем Artur_hopf, 12 авг 2020.

  1. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    В гугле порылся, там все предлагают кнопку и привязку к якорю.
    Нужно именно доскролить до блока с помощью колесика мышки или перетаскивания ползунка скроллинга.

    Допустим есть цикл перебирающий блоки, и на нужном блоке запоминающий его
    Код (Javascript):
    1. [].forEach.call( elList, function( item, i ){
    2.    if( i == num )
    3.    {
    4.         let box = item.getBoundingClientRect();
    5.         off_height = box;
    6.    }
    7. });
    в off_height имеем такой объект
    Код (Javascript):
    1. DOMRect = {
    2.     bottom: 1194,
    3.     height: 18,
    4.     left: 8,
    5.     right: 1272,
    6.     top: 1176,
    7.     width: 1264,
    8.     x: 8,
    9.     y: 1176
    10. }
    Далее например есть метод скрола, и вот что там прописать чтобы было событие когда нижний экран пользователя дойдет до этой отметки:
    Код (Javascript):
    1. window.addEventListener('scroll', function(e) {
    2.     //let category = document.querySelector('.category__products'),
    3.     //s = category.getBoundingClientRect().top + document.body.scrollTop;
    4.  
    5.     //я так понимаю нужно ориентироваться до off_height.top
    6.     console.log(off_height.top);
    7.     //console.log(s);
    8. });
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    написал так, вроде пашет)
    Код (Javascript):
    1. window.addEventListener('scroll', function(e) {
    2.  
    3.         var scrollHeight = Math.min(
    4.             document.body.scrollHeight, document.documentElement.scrollHeight,
    5.             document.body.offsetHeight, document.documentElement.offsetHeight,
    6.             document.body.clientHeight, document.documentElement.clientHeight
    7.         );
    8.  
    9.         let z = 20,
    10.             h = scrollHeight + document.body.scrollTop,
    11.             t = off_height.top + z;
    12.  
    13.         if(h >= t){
    14.             //событие
    15.         }
    16.  
    17.     });
    в цикле найденный элемент уходит в эту функцию
    Код (Javascript):
    1. function getOffsetSum(elem) {
    2.         var top = 0,
    3.             left = 0;
    4.  
    5.         while (elem) {
    6.             top = top + parseInt(elem.offsetTop);
    7.             left = left + parseInt(elem.offsetLeft);
    8.             elem = elem.offsetParent;
    9.         }
    10.  
    11.         return {
    12.             top: top,
    13.             left: left
    14.         };
    15.     }
    делал по этим инструкциям
    https://learn.javascript.ru/coordinates-document
    https://learn.javascript.ru/metrics-window