Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.01.2017, 12:48
Интересующийся
Отправить личное сообщение для Dayros Посмотреть профиль Найти все сообщения от Dayros
 
Регистрация: 23.01.2017
Сообщений: 11

Смена класса при скроллинге
Здравствуйте, есть сайт примерно такой конструкции:
<section id="section1">...</section>
<section id="section2">...</section>
<section id="section3">...</section>
<section id="section4">...</section>

Секции по высоте 100vh и стоит плагин для скролла по ним Scrollify.js
Сбоку есть фиксированное меню на uikit позволяющее лисать сайт по якорям.

Нужно сделать так, чтобы когда мы находимся на одних якорях цвет текста меню был белым, а на других черный.

Вот что смог собрать со всех ссылок в гугле, но не работает, да и я не особо разбираюсь, а сроки горят. Помогите пожалуйста.

window.addEventListener(function(){ 
var scroll1 = $('#section1').offset().top;
var scroll2 = $('#section2').offset().top;
var scroll3 = $('#section3').offset().top;
var scroll4 = $('#section4').offset().top;
var scroll5 = $('#section5').offset().top;
var scroll6 = $('#section6').offset().top;
var scroll7 = $('#section7').offset().top;
var scroll8 = $('#section8').offset().top;
var scrollTop = window.pageYOffset;
if (scrollTop == scroll1 
|| scrollTop == scroll3 
|| scrollTop == scroll5 
|| scrollTop == scroll7 
) { 
$('.menu > li > a').css('color', '#fff')  //смена стиля класса пунктов меню
} else if (scrollTop == scroll2 
|| scrollTop == scroll4 
|| scrollTop == scroll6 
|| scrollTop == scroll8 
) { 
$('.menu > li > a').css('color', '#000') //смена стиля класса пунктов меню
} 
});
Ответить с цитированием
  #2 (permalink)  
Старый 23.01.2017, 13:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Смена класса при скроллинге
Dayros,
идея Malleys,
Смена цвета текста в зависимости от секции
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
    <style>

html {
  background: url("http://wallpaperscraft.com/image/mazda_white_front_view_113205_5064x3376.jpg") center / cover;
  background-attachment: fixed;
  height: 100vh;
}

body, .scrolling {
  margin: 0;
  height: 100vh;
  overflow: auto;
}

nav {
  position: fixed;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  padding: 1em 1.5em;
  margin: 1em;
  border-radius: 70% 15% 40% 11%;
  z-index: 1;
  font-weight: bold;
  font-size: 130%;
}

section {
  height: 100vh;
  position: relative;
  top: 100vh;
  overflow: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  font: 20vh "Helvetica Neue", sans-serif;
}

section:nth-child(2n + 1), nav.white {
  color: #fff;
  background: #000;
  mix-blend-mode: multiply;
}

section:nth-child(2n), nav {
  color: #000;
  background: #fff;
  mix-blend-mode: screen;
}

    </style>
  </head>
  <body>

      <nav>☰</nav>
      <section>Lorem</section>
      <section>Ipsum</section>
      <section>Dolor</section>
      <section>Sit</section>
      <section>Amet</section>


    <script>
window.addEventListener("DOMContentLoaded", function() {
    var nav = document.querySelector("nav");
    var element = document.querySelector("body");
    document.addEventListener("scroll", function() {
        var progress = .5 + window.pageYOffset / element.offsetHeight | 0;
        nav.classList[progress % 2 ? "add" : "remove"]("white")
    })
});
    </script>
  </body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 23.01.2017, 13:47
Интересующийся
Отправить личное сообщение для Dayros Посмотреть профиль Найти все сообщения от Dayros
 
Регистрация: 23.01.2017
Сообщений: 11

рони, а как добавить к классу .menu > li > a класс white?)
Ответить с цитированием
  #4 (permalink)  
Старый 23.01.2017, 14:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Dayros,

var nav = document.querySelector(".menu");


.menu.white > li > a { 
  color: #fff; }
Ответить с цитированием
  #5 (permalink)  
Старый 23.01.2017, 18:06
Интересующийся
Отправить личное сообщение для Dayros Посмотреть профиль Найти все сообщения от Dayros
 
Регистрация: 23.01.2017
Сообщений: 11

рони, спасибо, скрипт заработал, но как то криво. Короче у меня 8 секций, и на первых четырёх ничего не меняется, а потом просто становится белым и не меняется на последующих 4 секциях, но при прокрутке между 4 и 5 секциями классы меняются.

Последний раз редактировалось Dayros, 23.01.2017 в 18:42.
Ответить с цитированием
  #6 (permalink)  
Старый 23.01.2017, 22:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Dayros,
делайте макет с вашей структурой здесь или любой песочнице
Ответить с цитированием
  #7 (permalink)  
Старый 24.01.2017, 08:04
Интересующийся
Отправить личное сообщение для Dayros Посмотреть профиль Найти все сообщения от Dayros
 
Регистрация: 23.01.2017
Сообщений: 11

рони, https://jsfiddle.net/NisXan/651avv54/3/
Ответить с цитированием
  #8 (permalink)  
Старый 24.01.2017, 08:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Dayros,
строка 3
var element = document.querySelector("section");

https://jsfiddle.net/651avv54/4/
Ответить с цитированием
  #9 (permalink)  
Старый 24.01.2017, 09:02
Интересующийся
Отправить личное сообщение для Dayros Посмотреть профиль Найти все сообщения от Dayros
 
Регистрация: 23.01.2017
Сообщений: 11

рони, спасибо огромное!
Ответить с цитированием
  #10 (permalink)  
Старый 24.01.2017, 19:41
Интересующийся
Отправить личное сообщение для Dayros Посмотреть профиль Найти все сообщения от Dayros
 
Регистрация: 23.01.2017
Сообщений: 11

рони, извините за надоедливость, но я сделал на сайте мультиязычность, то есть теперь url выглядит так - https://site.ru/ru/ или https://site.ru/en/, и теперь скрипт перестал работать, хотя в heade он есть.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена цвета/картинки фона при нажатии на элемент Webtest Элементы интерфейса 16 20.04.2017 22:36
При клике на ссылку смена класса соседнего DIV arborik jQuery 2 23.07.2014 01:00
смена картинок при нажатии sdff Общие вопросы Javascript 15 08.02.2014 17:08
Зафиксировать элемент при скроллинге. icebergcap Events/DOM/Window 3 20.01.2013 15:58
Смена картинки (бекграунд дива ) при событии (нажатие клавиш или клавиши и мыши) Monster Events/DOM/Window 5 01.11.2009 01:16