IntersectionObserver

IntersectionObserver
KB
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:12
0

Kolejny problem nowicjuasza. Chciałbym, aby nav zmieniało kolor dopiero kiedy sekcja pierwsza zbliży si do nav. Teraz mam syt, że zmienia kolor w momencie kiedy tylko sectionOne pojawi się na ekranie.

https://jsfiddle.net/dj7fb6sq/

Robie z tego tutka -
Gdzieś jakis błąd mam lub czegoś nie widzę w oryginalnym kodzie z tutoriala??

Jest cos takiego jak threshold: 1, ale czy w tym przypadku należy tego użyć?

Jakieś sugestie?

Neutral
Ale co chcesz osiągnąć? Żeby po pojawieniu się np. znacznika nav, zmienił się kolor na inny?
Neutral
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Polanów
  • Postów:151
0
Kopiuj
.apple {
  background: green;
}
Kopiuj
<body style="background: darkolivegreen;">

<div style="margin-top: 2000px;">1</div>

<div id="scroll1" class="apple">123</div>

<div style="margin-bottom: 2000px;">2</div>
Kopiuj
var intersectionObserver = new IntersectionObserver(function(entries) {

   entries[0].target.classList.toggle('apple');


}, { rootMargin: "100px 0px 100px 0px"});

intersectionObserver.observe(document.getElementById('scroll1'));
Kopiuj
</body>

Obiekt rootMargin, to chyba to czego szukasz.

KB
Sorki cos ten kod mi nie działa. Możesz to wstawic do JSFidle??
KB
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:12
0

W tym przypadku, chodzi mi o podobny efekt, który jest w tutorialu. W moemncie kiedy sekcja1 dociera do menu, menu zmienia kolor.

Ogólnie to jest rozwiązanie z tutoriala - https://jsfiddle.net/Lf3cr2md/

edytowany 3x, ostatnio: KordianB
Neutral
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Polanów
  • Postów:151
0
Kopiuj
const sectionOneOptions = {
  rootMargin: "-200px 0px 0px 0px"
};

Zmień te "-200px" na inną wartość.

Wyjaśnij o co chodzi, bo teraz nie wiadomo do końca. Naciśnij F12 i powinieneś zobaczyć efekty po scroll'owaniu (zmieniające się style, elementy; itp.).

link

edytowany 2x, ostatnio: Neutral
KB
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:12
0

Zmiana wartości nic nie zmienia. Tak jak w tym linku, który podałem https://jsfiddle.net/Lf3cr2md/ w momencie kiedy sekcja jeden dociera do menu, do wspomnianego zostaje dodany kolor. Nie wiem jak to bardziej wyjasnic.

Neutral
OK, to kiedy ma się zmienić kolor, w którym momencie?
KB
Przepraszam cos pomyliłem. Zaraz wyjasnie.
KB
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:12
0

https://jsfiddle.net/yxugwkLe/6/

Chodzi o to, aby kolor menu, zmienil sie dopiero w momencie kiedy niebieska sekcja dociera do menu. Skrolowanie przez cała czerwona sekcję niczego nie powinno zmienic.

KB
Napisałem od nowa i teraz działa. Gdyby komuś sie jednak chiało zerknąć do powyższego kodu i napisać gdzie jest błąd, byłbym dozgonnie wdzięczny. Czy chodziło tam o strukturę html?
Neutral
Jeśli możesz to wrzuć tutaj kod. Jeśli chciałbyś, to spójrz jeszcze na inne rozwiązanie.
KB
Jaki kod/ Ten, który działa w moim przypadku?
Neutral
Tak, ten który działa.
Neutral
A nie jest tak czasem, że funkcjonalność działa bez "-200px"?
KB
Tak, to jest tylko po to aby animacja zaczeła się troszkę wcześniej. w tym przypadku bez znaczenia.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.