webForumDet fria alternativet

Fade ut en div när man scrollar mer än 100 px från toppen

JavaScript

7 svar · 481 visningar · startad av bikic

Medlem sedan juni 2006261 inlägg
Frågan#1

Hej!

Funderar på om det finns en funktion för detta. Om du är 100px från toppen så ska en div fadas ut. Sen när man är mindre än 100 pixlar från toppen så ska diven fadas in igen.

Går detta att lösa?

Medlem sedan juni 2006261 inlägg
#2

Har hittat ett sätt, hur får jag den att fadas in igen d?

	
	twitterBird = $("#twitter");	

	$(window).scroll(function() {
    		twitterBird.each(function(i) {

        		a = $(this).offset().top + $(this).height();
        		b = $(window).scrollTop() + $(window).height();
        	
			if (a < b) $(this).fadeTo(500,0);
    		});
	});
Medlem sedan juni 20019 519 inlägg
#3

else i din if fråga? eller kolla direkt om den skall fadeTo 0 eller 1:

$(this).fadeTo(500, a < b ? 0 : 1);

kanske?

Sen varför skall du köra en each? finns ju ingen anledning $("#twitter") är ju ändå ensam.

Medlem sedan aug. 2008815 inlägg
#4

bikic skrev:

Har hittat ett sätt, hur får jag den att fadas in igen d?

	
	twitterBird = $("#twitter");	

	$(window).scroll(function() {
    		twitterBird.each(function(i) {

        		a = $(this).offset().top + $(this).height();
        		b = $(window).scrollTop() + $(window).height();
        	
			if (a < b) $(this).fadeTo(500,0);
    		});
	});
if (a > b) $(this).fadeIn(500);
Medlem sedan juni 20019 519 inlägg
#5

Om det är din fågel på sidan så kolla bara om $(window).scrollTop() är 0 så skall den visas, annars skall den försvinna, gissar att det är det du är ute efter?

Medlem sedan juni 2006261 inlägg
#6

Jag fick löst det nu, kolla här:

http://web.ndesign.se

Men ju längre ner jag scrollar desto längre tid tar det för fågeln att fadas in igen.


twitterBird = $("#twitter");	

	$(window).scroll(function() {
    		
        	a = twitterBird.offset().top;
        	b = $(window).scrollTop();
        	
		if (b == 0) {
			twitterBird.fadeTo(500,1);
		} else {
			if (a > b) twitterBird.fadeTo(500,0);
		}

	});
Medlem sedan aug. 2008815 inlägg
#7
if (b == 0) {
	$(this).fadeTo(500,1);
	fade_in=true;
} else  if(fade_in){
	if (a > b) $(this).fadeTo(500,0);
	fade_in=false;
}

Det blir ju en 500ms delay varje gång man scrollar. Men om du lägger in en boolean som gör att den bara fadas ut en gång så borde det jue funka?

Medlem sedan juni 20019 519 inlägg
#8
var twitterBird = $("#twitter");

$(window).scroll(function() {
    if ($(this).scrollTop() === 0) {
        twitterBird.fadeIn(500).removeClass("hidden");
    } else if(!twitterBird.hasClass("hidden"))  {
        twitterBird.addClass("hidden").fadeOut(500);
    }
});

eller så rensar du animeringskön:

var twitterBird = $("#twitter");

$(window).scroll(function( ) {
    twitterBird.stop( ).fadeTo( 500, $(this).scrollTop() === 0 ? 1 : 0 );
});
269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)