In fact, if you find yourself wanting to do a lot of stuff when scrolling
has stopped, you could add an event for it (again, untested):
(function($) {
var scrollTimeoutID;
$(window).bind('scroll', function() {
clearTimeout(scrollTimeoutID);
scrollTimeoutID = setTimeout(function() {
$(window).trigger('scrollstop');
}, 300);
});
})(jQuery);
$(document).ready(function() {
var topOffset = 100;
$("#label").css('top', topOffset + "px");
$(window).bind('scrollstop', function() {
$("#label").animate({top: $(document).scrollTop() + topOffset},
"slow", "easein");
});
});
Hope it helps.
--Erik
On 9/1/07, Erik Beeson <[EMAIL PROTECTED]> wrote:
> Approaching the problem a different way, how about only firing the
> animation if scrolling has paused for a moment? Maybe something like
> (untested):
>
> $(document).ready(function() {
> var scrollTimeoutID;
> var topOffset = 100;
> $("#label").css('top', topOffset + "px");
>
> $(window).bind('scroll', function() {
> clearTimeout(scrollTimeoutID);
>
> scrollTimeoutID = setTimeout(function() {
> $("#label").animate({top: $(document).scrollTop() + topOffset},
> "slow", "easein");
> }, 300);
> });
> });
>
> You should probably play around with that 300 to find the optimum
> setting for you.
>
> Hope it helps.
>
> --Erik
>
>
> On 9/1/07, emi polak <[EMAIL PROTECTED]> wrote:
> > no luck heh? :(
> >
> >
> > On 9/1/07, emi polak <[EMAIL PROTECTED]> wrote:
> > > Hi,
> > > I am altering the "top" property of a floating label in a webpage. The
> > "top" adjustement is fired at page scroll, so that the label would
always
> > stay in its place.
> > > Now I would like to animate the label between its oldPosition and
> > newPosition. So I use animate() to set the "top" property, but the
method
> > starts many times during the page scroll, thus creating a very buggy and
> > slow motion.
> > >
> > > So: is there a way to cancel an already started animation, so that
when
> > "scroll", the animation is first canceled and then its fired again?
> > >
> > > Here is what I'm using now:
> > >
> > > var topOffset = 100;
> > > $("#label").css('top', topOffset + "px");
> > >
> > > $(window).bind("scroll", function() {
> > > var newScrollTop = $(document).scrollTop();
> > > var newPos = newScrollTop + topOffset;
> > >
> > > $("#label").animate({
> > > top: newPos
> > > }, "slow", "easein");
> > > });
> > >
> > > Thank you!
> > > emipolak
> > >
> > >
> >
> >
>