Посмотрите на этот фрагмент. Вы должны быть в состоянии настроить его под свой код. Мне нужно было бы увидеть точный код на вашей странице, чтобы посоветовать что-нибудь более подробное.
var hubTopDistances = [];
var hubBtmDistances = [];
var i = 0;
$('section.drk').each(function(i,el) {
hubTopDistances.push($(el).offset().top);
hubBtmDistances.push($(el).offset().top + $(el).height());
});
var drkCount = hubTopDistances.length;
var breakpoint = {
value: 0,
reference: 'midScrn',
set: function() {
var v = calcDistances();
breakpoint.value = v[breakpoint.reference];
}
};
$(window).scroll(function () {
breakpoint.set();
$('.distanceToTop').text(parseInt(breakpoint.value));
for (i = 0; i < drkCount; i++) {
if (breakpoint.value > hubTopDistances[i]) {
if (breakpoint.value < hubBtmDistances[i]) {
goDark();
return;
}
}
}
goLight(); // If the function didn't return at goDark(), means we gotta goLight()
});
function goDark() {
$('.distanceToTop').addClass('darkmode');
}
function goLight() {
$('.distanceToTop').removeClass('darkmode');
}
function calcDistances() {
var scrlTop = $(window).scrollTop();
return {
scrlTop: scrlTop,
midScrn: scrlTop + ($(window).height() / 2),
scrnBtm: scrlTop + $(window).height()
}
}
section {
height: 100vh;
}
.distanceToTop {
position:fixed;
top: 5px;
right: 10px;
width: 50px;
height: 1.5em;
border: 1px solid purple;
text-align:right;
padding: 0 5px;
}
.layout {
position:relative;
}
.darkmode {
background-color: navy;
color: yellow;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="layout">
<div class="distanceToTop">
</div>
<section class="MNGwb drk"> Section 1
</section>
<section class="MNGex"> Section 2
</section>
<section class="MNGwb drk"> Section 3
</section>
</div>