Я пытаюсь сделать своего рода навигацию на основе текущего раздела.Обнаружение, если раздел в данный момент отображается в прокрутке
Мой код выглядит следующим образом:
$(function() {
'use strict';
function setTitle(title) {
$('.overlay').text(title);
}
function removeTitle() {
$('.overlay').text('');
}
$(window).on('scroll', function() {
let windowScroll = $(window).scrollTop(),
sections = $('section[data-title]');
sections.each(function() {
let thisStart = $(this).offset().top,
thisHeight = $(this).outerHeight(true),
thisTitle = $(this).attr('data-title'),
thisEnd = thisHeight + thisStart;
console.log(`start: ${thisStart}, end: ${thisEnd}, scroll: ${windowScroll}`);
if(windowScroll >= thisStart && windowScroll < thisEnd) {
setTitle(thisTitle);
} else {
removeTitle();
}
});
});
});
HTML
<section class="section section-first"></section>
<section class="section section-what" data-title="First">
</section>
<section class="section section-cv" data-title="Secound">
</section>
<div class="overlay"></div>
К сожалению, он работает только с последним .section
. Что я могу сделать?
Пожалуйста, обратитесь к моей CodePen, чтобы увидеть, что я имею в виду именно: http://codepen.io/tomekbuszewski/pen/Xmovwq
Вы должны быть более точным в то, что проблема есть. Какое поведение наблюдается по сравнению с ожидаемым поведением? – nem035
Работает отлично, если вы удалите оператор 'else'. Второй раздел в настоящее время переписывает текст другого. – Shikkediel
Если вы удалите else, название никогда не будет удалено. –