Pohyblivo-fixné pozadie pomocou jQuery

Určite viete že obrázok na pozadí stránky sa môže pri scrollovaní posúvať spolu s obsahom alebo zostať statické,pričom sa posúva len obsah stránky. V tomto tipe si ukážeme ako tieto dve možnosti skombinovať.

 

Tento postup sa hodí najmä ak chceme mať na pozadí veľkú fotografiu ktorá sa nemá vertikálne opakovať a nekončí prechodom do jednej farby . Nakoľko nevieme aké rozlíšenie bude mať používateľ na svojom počítači, pripravili sme pozaďový obrázok (fotografiu) v dostatočnej výške aj pre vysoké rozlíšenia.

Nechceme však ľudí s menšími monitormi ukrátiť o pekný dizajn. Najlepšie by bolo keby fotografia scrollovala pokiaľ to ide (neposunuli sme sa až na jej koniec) a keď už to nejde, zostala na pozadí staticky.

V tomto prípade nám pomôže jQuery:

$(function() {

	$('body').css('background-attachment','scroll');
	
	$(window).scroll(function(){
			var bgheight = 1796; // tu treba nastaviť výšku obrázka
			var wheight = $(window).height();
			var sc = $(window).scrollTop();
			if((sc+wheight) > bgheight){
				var offs = wheight+sc-bgheight;
				$('body').css('background-position', '50% '+offs+'px');
			}
			else{
				$('body').css('background-position','50% 0');
			}
	});
	
});

Tento jednoduchý kus kódu sa spustí vždy keď používateľ zascrolluje. Vypočíta o koľko treba nastaviť posunutie pozadia aby to vyzeralo že sa pozadie vôbec neposunulo a nastaví požadované CSS. 

Na začiatku kódu sme ešte nastavili pozadiu vlastnosť background-attachment na scroll . Naše CSS totiž vyzerá na načiatku takto:

body{
   background: #fff url(img/bg.jpg) no-repeat 50% 0;
   bacgkround-attachment: fixed;
}

 Pri načítaní stránky je pozadie nastavené na fixnú pozíciu a až Javascript sa stará o zmenu. Je to kvôli používateľom s vypnutým Javascriptom, aby u nich nebola stránka po zascrollovaní rozbitá (bez pozadia).

Skôr ako začneme: nahliadnite do spracovania vašich osobných údajov

Súbory cookies používame najmä na anonymnú analýzu návštevnosti a vylepšovanie našich web stránok. Ak si nastavíte blokovanie zápisu cookies do vášho prehliadača, je možné, že web sa spomalí a niektoré jeho časti nemusia fungovať úplne korektne. Viac info k spracúvaniu cookies.