SKRÓTY:

BACKGROUND IMAGE SIZE

24 kwietnia 2009, 16:22

Tym razem coś z tzw. innej beczki: niedawno szukałem rozwiązania, które umożliwiałoby emulację planowanej dopiero w CSS3 własności background-size. Okazało się, że takich rozwiązań jest wiele, żadne jednak nie spełniało wymagań:

  • rozciąganie obrazka na całą szerokość strony,
  • dostosowanie rozmiaru pionowego tła do faktycznego rozmiaru dokumentu,
  • rozmiar tła dostosowujący się dynamicznie do rozmiaru okna przeglądarki.

Właściwe rozwiązanie – wykorzystujące jQuery, choć możliwe do zrealizowania także w czystym JS – okazało się proste; publikuję je jednak, bo może komuś oszczędzić kilkunastu minut kombinowania.

__________

1. Pierwszym elementem dokumentu (X)HTML powinien być div o identyfikatorze background; właściwą zawartość umieszczamy wewnątrz diva main:

<div id="background"><img src="..." alt="" /></div>
<div id="main">(...)</div>

2. W arkuszu CSS definiujemy następujące style dla diva background:

#background {
	width: 100%;
	position: absolute;
	top: 0;
	left: 0;
	z-index: -10;
	overflow: hidden;
}

#background img {
	width: 100%;
}

3. W sekcji HEAD, poniżej (!) deklaracji link rel=”stylesheet”, umieszczamy następujący kod JS:

<script type="text/javascript">
$(document).ready(function(){

	var bgSizeCalc = function(){
		var pageH = $('#main').height();
		var browserH = $(window).height();
		var bgH = 0;
		if (pageH > browserH) bgH = pageH+30;
		else bgH = browserH;

		return bgH;
	};

	$('#background').height(bgSizeCalc());		

	$(window).resize(function(){
		bgH = bgSizeCalc();
		$('#background').height(bgH);
	});
});
</script>

__________

To wszystko. Efekty działania można zobaczyć tutaj.

Nie ma jeszcze komentarzy.

DODAJ KOMENTARZ