Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [css] efekt fade in
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam,

Mam na stronie (typu one page) wykorzystany efekt fadein w css:
  1. @-webkit-keyframes fadeIn {
  2. 0% {
  3. opacity: 0;
  4. }
  5. 100% {
  6. opacity: 1;
  7. }
  8. }
  9.  
  10. @keyframes fadeIn {
  11. 0% {
  12. opacity: 0;
  13. }
  14.  
  15. 100% {
  16. opacity: 1;
  17. }
  18. }
  19.  
  20. .fadeIn {
  21. -webkit-animation-name: fadeIn;
  22. animation-name: fadeIn;
  23. }
  24. /*sekcje */
  25. #home, #oferta, #kontakt{
  26. animation : fadeIn 1s;
  27. -moz-animation : fadeIn 1s; /* Firefox */
  28. -webkit-animation : fadeIn 1s; /* Safari and Chrome */
  29. -o-animation : fadeIn 1s; /* Opera */}


Nic skomplikowanego. Jednak efekt ten generuje się od razu dla wszystkich elementów na stronie, przez co dla niższych partii strony praktycznie go nie widać. Chciałbym uzyskać taki efekt, że w momencie scrolowania strony w kolejnych sekcjach efekt fadein dopiero wtedy jest wywoływany. Jeśli ktoś mógłby mi podpowiedzieć w którą stronę iść. Guglałem trochę, na stockoverflow też nic konkretnego nie znalazłem. Chciałbym uniknąć korzystania z JS, ale jak będzie trzeba to trudno.

Pozdrawiam, Ł.
lukash82
Witam,

Dzięki za naprowadzenie. Nieco udało mi się temat ogarnąć. Ale mam jeszcze "drobny" problem. Najlepiej na przykładzie, popełniłem do tej pory coś takiego: https://jsfiddle.net/hwghx6y8/

Są tam 2 kwadraty.

1 - widoczny od razu, powyżej "linii zgięcia" ekranu. Tu akcja "wjazdu" obrazka odpala się na starcie i jest ok.

2 - widoczny dopiero po scrolowaniu (mówię tu cały czas o stronie typu one page). Przy 2 obrazku chciałbym uzyskać efekt wywołania przesunięcia dopiero w momencie gdy użytkownik zjedzie w to miejsce. A tymczasem to usilnie ładuje się na starcie i tyle...

Chciałbym uzyskać coś takiego: http://www.templatemonster.com/demo/51858.html

Czy do takiego efektu konieczny jest JS? Proszę o jakąś podpowiedź jak tego szukać. Pozdrawiam, Ł.
Rufus_84
Witam,
Raczej bez js się nie obejdzie, bo trzeba wykryć, że element jest widoczny.

Można to zrobić w ten sposób:

  1.  
  2. var myDiv = $('.my-div').offset().top - $(window).height();
  3.  
  4. if ($(window).scrollTop() > myDiv) {
  5. $(myDiv).addClass('fadein');
  6. LUB
  7. $(myDiv).fadeIn(500);
  8. }
  9.  



Można dodać klasę po zescrollowaniu co odpali css lub od razu w jquery zastosować fadein

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.