Задать вопрос
serii81
@serii81
Я люблю phр...

Как при скролле узнать класс у элемента с помощью javascript?

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

Я вот написал код, только он работает, если скроллишь страницу с самого верха.

if ($('body').hasClass('page-template-front-page')) {
			let navigation = $('#js-navigation');
			let navigationOffsetTop = navigation.offset().top;

			let dark0 = $('.dark-scroll').eq(0);
			let dark0OfsetTop = dark0.offset().top - navigationOffsetTop;
			let dark0height = dark0.innerHeight();

			let dark1 = $('.dark-scroll').eq(1);
			let dark1OfsetTop = dark1.offset().top - navigationOffsetTop;
			let dark1height = dark1.innerHeight();

			let dark2 = $('.dark-scroll').eq(2);
			let dark2OfsetTop = dark2.offset().top - navigationOffsetTop;
			let dark2height = dark2.innerHeight();

			let dark3 = $('.dark-scroll').eq(3);
			let dark3OfsetTop = dark3.offset().top - navigationOffsetTop;
			let dark3height = dark3.innerHeight();

			let dark4 = $('.dark-scroll').eq(4);
			let dark4OfsetTop = dark4.offset().top - navigationOffsetTop;
			let dark4height = dark4.innerHeight();

			let dark5 = $('.dark-scroll').eq(5);
			let dark5OfsetTop = dark5.offset().top - navigationOffsetTop;
			let dark5height = dark5.innerHeight();


			$(document).on('scroll', function () {
				let doc = $(this);
				let docScrollTop = doc.scrollTop();

				if(docScrollTop > dark0OfsetTop && docScrollTop < (dark0height + dark0OfsetTop)){
					if(navigation.hasClass('light')){
						navigation.removeClass('light');
					}
				}else if(docScrollTop > dark1OfsetTop && docScrollTop < (dark1height + dark1OfsetTop)){
					if(navigation.hasClass('light')){
						navigation.removeClass('light');
					}
				}else if(docScrollTop > dark2OfsetTop && docScrollTop < (dark2height + dark2OfsetTop)){
					if(navigation.hasClass('light')){
						navigation.removeClass('light');
					}
				}else if(docScrollTop > dark3OfsetTop && docScrollTop < (dark3height + dark3OfsetTop)){
					if(navigation.hasClass('light')){
						navigation.removeClass('light');
					}
				}else if(docScrollTop > dark4OfsetTop && docScrollTop < (dark4height + dark4OfsetTop)){
					if(navigation.hasClass('light')){
						navigation.removeClass('light');
					}
				}else{
					if(!navigation.hasClass('light')){
						navigation.addClass('light');
					}
				}
			});

		}
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы