JS добавление класса в цикле

220
27 ноября 2021, 23:20

Есть такая проблема. На странице расположено несколько элементов .paralax при прокрутке им должен добавляться класс fixed при достижении определенного места. Делается это при скроле с помощью следующего js-кода:

    var browserWindowHeight = document.documentElement.clientHeight;
    var paralax = document.getElementsByClassName( 'paralax' );
window.addEventListener( 'scroll', function ( event ) {
  for ( let i = 0; i < paralax.length; i++ ) {
    const paralaxItem = paralax[i];
    var distanceToBottom = paralaxItem.getBoundingClientRect().bottom;
    if ( distanceToBottom <= browserWindowHeight ) {
      paralaxItem.classList.add( 'fixed' );
    }
    else {
      paralaxItem.classList.remove( 'fixed' );
    }
  }

} )

Соответственно данный класс должен удалятся при прокрутке страницы назад. Проблема заключается в том, что класс добавляется, но когда страница прокручивается далее и класс должен по идее оставаться присвоенным, он почему-то (для меня-новичка) мигает, т. е. при скролле я вижу в панели, что присвоенный класс то добавляется, то удаляется очень быстро. Если убрать блок else, то все идет нормально, класс не мигает, но он не убирается при скролле элемента назад.

READ ALSO
Асинхронность js (подвисание скрипта)

Асинхронность js (подвисание скрипта)

Подскажите пожалуйста, как предотвратить временного зависания скрипта во время работы циклаНасколько я знаю, нельзя параллельно работать...

199
Как показать блок полностью при первом клике и раскрыть его на весь экран при повторном?

Как показать блок полностью при первом клике и раскрыть его на весь экран при повторном?

Как реализовать плавное выдвижение блока с помощью Jquery? Но нужно не просто скрыть/показать, а изначально должна быть видна верхняя часть...

310
Проверка на число в функции

Проверка на число в функции

Нужно сделать так чтобы когда вводят не число, в функцию prime, появилось сообщение, что нужно ввести только число

148