Мне нужна помощь для моего личного сайта. Я хочу создать сайт с одной страницей с фиксированной верхней навигацией (с прозрачным фоном). При прокрутке страницы цвет элементов меню должен динамически меняться от черного до белого на участках с темным фоном (они имеют класс «.dark-bg») и возвращают белый цвет в другие разделы. Все секции имеют высоту 100vh (за исключением меню, конечно). Это основная структура HTML сайта:jQuery: изменить цвет текста фиксированной верхней панели навигации при прокрутке страницы
<section class="section--menu fixed-header">
<nav class="menu" id="navigation">
<ul class="menu__list pull-md-right">
<li class="menu__item menu__item--current">
<a class="menu__link" data-target="intro-fabio">home</a>
</li>
<li class="menu__item">
<a class="menu__link" data-target="about-fabio">about</a>
</li>
<li class="menu__item">
<a class="menu__link" data-target="skills-fabio">skills</a>
</li>
<li class="menu__item">
<a class="menu__link" data-target="works-fabio">works</a>
</li>
<li class="menu__item">
<a class="menu__link" data-target="contacts-fabio">contacts</a>
</li>
</ul>
</nav>
</section>
<!-- HOME
======================================================== -->
<section id="intro-fabio">
</section>
<!-- ABOUT
======================================================== -->
<section id="about-fabio" class="dark-bg">
</section>
<!-- SKILLS
======================================================== -->
<section id="skills-fabio">
</section>
<!-- WORKS
======================================================== -->
<section id="works-fabio" class="dark-bg">
</section>
<!-- CONTACTS
======================================================== -->
<section id="contacts-fabio">
</section>
Я написал этот сценарий JQuery, но это, кажется, работает только для последнего раздела с классом «.dark-BG».
$(document).ready(function() {
$(".dark-bg").each(function() {
detectBg($(this));
});
function detectBg(sezione) {
$(window).scroll(function() {
var finestra = $(window).scrollTop();
var sezCurr = sezione.offset().top;
var sezNext = sezione.next().offset().top;
if (finestra >= sezCurr && finestra < sezNext) {
$('.menu__link').css("color", "#ebebeb");
}
else {
$('.menu__link').css("color", "#1c1c1c");
}
});
}
});
Заранее благодарен!
он работает только с '.dark-bg', потому что это каждый из них вызывается '$ (". dark-bg "). each (function() {detectBg ($ (this));});' –
, если все исправлено (heigh), используйте [jQuery scrollTop()] (https://api.jquery.com/scrollTop/) в элементе body, чтобы определить, где находится прокрутка, и отобразить правильное меню ... –
это также может помочь вам: [codepen] (http://codepen.io/anon/pen/wjpKn) Я нашел его здесь: [Высота просмотра в полноэкранном режиме?] (https://css-tricks.com/f orums/topic/viewport-height-for-full-screen-div/# post-161095) –