Изменение класса фиксированного элемента в зависимости от того, какой раздел страницы виден в данный момент (jQuery)

Здравствуйте коллеги-разработчики!

Я провел большое сканирование в Интернете, включая StackOverflow, и, похоже, не нашел ничего, документирующего то, что я хочу, или чего-то отдаленно похожего на то, что я хочу.

Я создаю сайт с фиксированной панелью навигации, однако панель навигации фактически не имеет цвета фона (прозрачного). На панели навигации есть два видимых элемента;

  • логотип клиента; Я создал это, используя собственный шрифт, поэтому я действительно могу контролировать все форматирование с помощью CSS и классов, применяемых через JS.

  • Кнопка переключения меню; Это также все основано на элементах, и у меня есть полный контроль над CSS и классами, применяемыми через JS.

Структура страницы основана на <section>, и каждый раздел либо не совсем белый, либо черный.

Например, <section class="dark">...</section> будет иметь черный фон (dur).


Проблема

Кнопка меню и логотип клиента также черные, поэтому мне нужен способ отслеживать класс текущего видимого/прокручиваемого раздела (темный или светлый), а затем применять класс к навигации через JS.

Так, если текущий раздел имеет класс светлого, то кнопка меню и логотип будут черными, если текущий раздел имеет класс темного, то кнопка меню и логотип станут белыми.


Я полностью осведомлен о доступных плагинах, таких как scrollorama, которые имеют возможности слежения за разделами, но мне действительно нужно использовать только крошечную часть функциональности, поэтому будет более эффективно просто написать пользовательскую функцию. Также открыт для предложений.


person interactronaut    schedule 26.11.2013    source источник
comment
Обычно я жду, пока сработает событие загрузки окна, проверяю верхнюю позицию и высоту каждой секции, затем при прокрутке решаю, основываясь на позиции прокрутки и ранее упомянутых местоположениях/высотах, какой класс добавить.   -  person Kevin B    schedule 27.11.2013
comment
Как вы справляетесь с этим, если вы находитесь на полпути между двумя разделами? например, половина строки меню находится в светлой части, а половина в темной? возможно, вам придется переосмыслить это, так как я думаю, что это будет выглядеть немного сломанным.   -  person Kevin B    schedule 27.11.2013
comment
@KevinB, у тебя есть пример, на который я могу взглянуть?   -  person interactronaut    schedule 27.11.2013
comment
@kevinB Панель навигации чрезвычайно мала, поэтому на самом деле имеет значение только то, в каком разделе находится панель навигации, если вы находитесь на полпути между темной секцией и светлой секцией, навигация все равно будет в темной части, пока вы не прокрутите ее.   -  person interactronaut    schedule 27.11.2013
comment
Я нашел сайт, который делает ужасно короткую версию этого, используя scrollorama, но это похожая, менее чистая концепция theblacksparrow .co.nz   -  person interactronaut    schedule 27.11.2013
comment
Вот пример, имейте в виду, что на самом деле он не делает то, что вам нужно, он просто показывает, как я нахожу позиции всех разделов, а затем определяю, нахожусь ли я в них. pastebin.com/WGckwwE7 он изменен, чтобы соответствовать странице, с которой он работает, но это может быть достойным местом для начала .   -  person Kevin B    schedule 27.11.2013


Ответы (1)


Я ищу то же, что и вы, и я нашел это:

слайд-шоу с изменением шрифта цвет на каждом слайде + шрифт обратного вызова для установки цвета при прокрутке

Надеюсь, это может дать вам некоторую подсказку!

person Rorro    schedule 23.10.2014