• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Klasse zu einem Objekt hinzufügen, wenn zu diesem gescrollt wird

jakestyler

Mitglied
Hey!
Ich erstelle mal wieder eine One-Page-Seite und würde nun gerne eine Animation (Klasse) von animate.css zu einem Objekt hinzufügen, wenn man zu diesem scrollt.

Ich habe leider garkeine Ahnung, wie man dass anstellt.. (Punkte wie <a id="bla"></a> wurden schon gesetzt)
Ausserdem sollten sich die Animationen wiederhohlen, wenn man hochscrollt und dann wieder runter.

Hier ein Beispiel: http://designmodo.com/flat/ (Einfach mal scrollen)
 
Der erste Schritt wäre, eine Scrollfunktion zu bauen. Dafür gibt es in jQuery scrollTop(), und wenn man das mit animate() kombiniert, lässt sich ein easing-Effekt erzielen.
 
Ich will eigentlich nur ne Klasse hinzufügen, dass mit ScrollTop verstehe ich nicht, kannst du mr das noch ein bisschen erläutern (Codebeispiel für bestimmte Stelle)? :)
 
Verstehe nicht ganz was du willst aber denke mal so:

Code:
$(window).scroll(function () {
    var scrollTop = $(this).scrollTop();
    if(scrollTop > 1000) $('#elem').addClass('show');
});
 
Also, ich hab's immernoch nicht raus!

Folgendes habe ich:
HTML:
<img src="https://s3.amazonaws.com/bucket/img/support.png" alt="Support" width="396" height="335" class="centering hide" id="support">

Javascript:
Code:
$(window).scroll(function () {
    var scrollTop = $(this).scrollTop();
    if(scrollTop > 1000) $('#support').addClass('show animated fadeIn');
});

Aber es tut sich nichts. Wenn ich zu dem Element scrolle, ändert sich nichts.

Nun stehe ich also vor dem Problem, dass sich nichts ändert!
 
Es ist gut möglich dass du statt $(window), $(document) oder $('html, body') verwenden musst.
Irgendeines ist Crossbrowser-kompatibel, nur weiß ich jetzt nicht welches ;)

Edit: Achso, ja dann
 
Und wie kann ich dass mit mehreren ID's machen?
Ich habe jetzt folgendes Script:
Code:
tiles = $("#pre1").fadeTo(0, 0);
$(window).scroll(function(d,h) {
    tiles.each(function(i) {
        a = $(this).offset().top + $(this).height();
        b = $(window).scrollTop() + $(window).height();
        if (a < b) $(this).fadeTo(500,1);
    });
});

Wie kann ich jetzt nichtnur #pre1 einblenden wenn dahin gescrollt wird, sondern auch #pre2, wenn zu #pre2 hingescrollt wird. Also der eine Effekt nur bei einem anderem Element...

Bin ein totaler Anfänger in dem Bereich...
 
Hmmmm... Wie gesagt, dass ist der Code:
Code:
tiles = $("#pre1").fadeTo(0, 0);
$(window).scroll(function(d,h) {
    tiles.each(function(i) {
        a = $(this).offset().top + $(this).height();
        b = $(window).scrollTop() + $(window).height();
        if (a < b) $(this).fadeTo(500,1);
    });
});
Nun würde ich gerne fadeto durch addClass('animated fadeInLeft'); ersetzten, funktioniert aber leider nicht..
 
Zurück
Oben