Я пытаюсь найти более чистый способ определить, находится ли класс в верхней части экрана, но в пределах определенного порога. Например, от 50 до 150 пикселей сверху.
я сделал что-то здесь, используя идентификатор для проверки, но он очень повторяющийся. возможно ли получить класс, работающий с этим вместо ID?
$(window).on('scroll', function() {
var scrollTop = $(window).scrollTop();
var elementFromTop = $('#section_a').offset().top;
var distanceFromTop = (elementFromTop - scrollTop);
if (distanceFromTop > 0 && distanceFromTop < 100) {
console.log("section_a in zone- highlight link in nav");
}
});
$(window).on('scroll', function() {
var scrollTop = $(window).scrollTop();
var elementFromTop = $('#section_b').offset().top;
var distanceFromTop = (elementFromTop - scrollTop);
if (distanceFromTop > 0 && distanceFromTop < 100) {
console.log("section_b in zone- highlight link in nav");
}
});
<div class="section" id="section_a"> width is 100%</div>
<div class="section" id="section_b"> width is 100%</div>
Вы можете попробовать применить этот код, используя jquery.each().
Что-то вроде этого?
$('.myclass').each(function(){
var id = $(this).attr('id');
var scrollTop = $(window).scrollTop();
var elementFromTop = $('#' + id ).offset().top;
var distanceFromTop = (elementFromTop - scrollTop);
if (distanceFromTop > 0 && distanceFromTop < 100) {
console.log("id" + id + " in zone- highlight link in nav");
}
});
Это применит ваш код к каждому элементу этого класса.