Hallo zusammen,
ich probiere gerade ein wenig mit der animate-Funktion in Verbindung mit scrollTop in jQuery rum, allerdings mit überraschenden Ergebnissen. Beim Zurückscrollen verzögert sich die "Rückbildung" in den Ausgangspunkt.
Siehe z.B. folgendes Beispiel:
Beschreibung:
Beim 1. Mausrad-Scroll sollen sich die beiden Boxen (gelb/grün) automatisch nach oben verschieben.
Scrollt man 1x zurück, fahren sie auch schön wieder zurück.
Problem:
Scrollt man z.B. runter bis die rote Box blau wird (>2000px), und dann wieder zurück auf 0, dauert es ca. 30 Sekunden, bis die gelbe und grüne Box wieder eingeblendet bzw. "zurück animiert" werden.
Aber die rote Box wird beim Zurückscrollen ab dem richtigen Scrollpunkt von blau wieder nach rot gewechselt.
*grübel*
Frage:
Ist es irgendwie möglich, diese Animationen ab dem gesetzten Scrollpunkt sofort wieder "zurück animieren" zu können? ... ohne Zeitverzögerung?
Oder gibt es da gute Tutorials?
Gruß,
Heinz
ich probiere gerade ein wenig mit der animate-Funktion in Verbindung mit scrollTop in jQuery rum, allerdings mit überraschenden Ergebnissen. Beim Zurückscrollen verzögert sich die "Rückbildung" in den Ausgangspunkt.
Siehe z.B. folgendes Beispiel:
Code:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>jQuery Animate/ScrollTop Übung</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<style type="text/css">
body {margin: 0; padding: 0;}
#content {height: 10000px;}
#rotebox {background-color: red; width: 100px; height: 100px; position: fixed; top: 0; left:0; }
#div01-1 {position: absolute; top: 40%; width: 100%; text-align: center; vertical-align: middle;
background-color: yellow;}
#div01-2 {position: fixed; top: 90%; left: 0; width: 100%; height: 1000px;
background-color: green;}
</style>
</head>
<body>
<div id="content">
<div id="rotebox">Rote Box</div>
<div id="div01-1">Gelbe Box</div>
<div id="div01-2">Grüne Box</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
// ROTE BOX als Referenzobjekt
var anim1 = 0;
$(document).scroll(function() {
anim1 = $(this).scrollTop();
if(anim1 > 500) {
$("#rotebox").css('background-color', 'blue');
} else {
$("#rotebox").css('background-color', 'red');
}
});
// 1. Scrollen ... 2 EFFEKTE: gelbe Box raus, grüne nach oben
var anim2 = 0;
$(document).scroll(function() {
anim2 = $(this).scrollTop();
if(anim2 > 20) {
// $("div").animate({left:'250px'});
$("#div01-1").animate({position: 'absolute', top: '-400px'}, 1000);
} else {
$("#div01-1").animate({position: 'absolute', top: '200px'}, 500);
}
});
var anim3 = 0;
$(document).scroll(function() {
anim3 = $(this).scrollTop();
if(anim3 > 20) {
$("#div01-2").animate({position: 'fixed', top: '200px'}, 1000);
} else {
$("#div01-2").animate({position: 'fixed', top: '90%'}, 500);
}
});
// Weiterscrollen ... Ausblenden
var anim4 = 0;
$(document).scroll(function() {
anim4 = $(this).scrollTop();
if(anim4 > 500) {
$("#div01-2").fadeOut(100);
} else {
$("#div01-2").fadeIn(100);
}
});
// ENDE document.ready-Funktion
});
</script>
</body>
</html>
Beschreibung:
Beim 1. Mausrad-Scroll sollen sich die beiden Boxen (gelb/grün) automatisch nach oben verschieben.
Scrollt man 1x zurück, fahren sie auch schön wieder zurück.
Problem:
Scrollt man z.B. runter bis die rote Box blau wird (>2000px), und dann wieder zurück auf 0, dauert es ca. 30 Sekunden, bis die gelbe und grüne Box wieder eingeblendet bzw. "zurück animiert" werden.
Aber die rote Box wird beim Zurückscrollen ab dem richtigen Scrollpunkt von blau wieder nach rot gewechselt.
*grübel*
Frage:
Ist es irgendwie möglich, diese Animationen ab dem gesetzten Scrollpunkt sofort wieder "zurück animieren" zu können? ... ohne Zeitverzögerung?
Oder gibt es da gute Tutorials?
Gruß,
Heinz