Poniżej krótko przedstawiłem trzy metody rozszerzania tła:
Tabele i CSS2
Biorąc przykład z podanej wcześniej strony pokrótce zaprezentuję jak może działać tabelka w celu rozciągnięcia tła na cały ekran. Główną zasadą działania jest rozciąganie obrazka na tabelkach, których szerokość jest równa 200%. Pewnym problemem jest zastosowanie właściwości min-width i min-height, które jak wiadomo nie działają w IE6. Na szczęście samo zassanie biblioteki MooTools pozwala wyeliminować te niedogodności - tak też zrobili na wspomnianej wyżej stronie. Oto przykład:Pewnym minusem tego rozwiązania jest to, że w celu umieszczenia zawartości strony musimy tworzyć nową warstwę - najlepiej na position:absolute i dopiero na niej umieścić scroll-bary - overflow:auto itp. Drugim minusem jest umieszczenie struktury, która jest nijak związana ze strukturą strony - nie wiadomo jak google to potraktuje ;)
Poniżej kod oraz struktura do zrobienia tła na tabelkach.
<div id="bg"> <div> <table cellspacing="0" cellpadding="0"> <tr> <td> <img src="img/bg.png" alt=""/> </td> </tr> </table> </div> </div>
* { margin: 0; padding: 0; } html, body, #bg, #bg table, #bg td { height:100%; width:100%; overflow:hidden; } #bg { position: fixed; } #bg div { height:200%; left:-50%; position:absolute; top:-50%; width:200%; } #bg td { text-align:center; vertical-align:middle; } #bg img { margin:0 auto; min-height:50%; min-width:50%; }
Flash
W celu zwiększenia wydajności możemy wsadzić w tło strony element Flash'owy, który pomimo osadzenia w trybie opaque i tak zapewnia większą wydajność niż rozciąganie na tabelce. Element tabelki i tak można zostawić w kodzie strony dla przeglądarek bez Flash'a (np. mobilne), natomiast w momencie wskazywania elementu, gdzie ma być umieszczone tło można wskazać węzeł nadrzędny od tabelki co spowoduje jej zastąpienie przez obiekt flash'owy.Jedną z przykładowych bibliotek jest as3-fullscreen-lib. Przygotowany kod można wykorzystać w darmowej aplikacji FlashDevelop i skompilować w darmowym Flex SDK. Więcej na temat konfiguracji można znaleźć na stronie Akademia Pana Flexa. Wskazany biblioteka oprócz obrazków obsługuje także umieszczanie plików wideo - miłej zabawy :)
Screen z filmu dostarczonego w przykładach do biblioteki |
CSS3
W CSS3 skorzystamy z właściwości background-size: cover, która pokrywa tłem całą warstwę. Jedynym mankamentem jest to, że nie działa to poprawnie na element body (tło nie rozciąga się w poziomie), więc pozostaje nam stworzyć warstwę ze stylem position:absolute oraz szerokością i wysokością na 100% i w ten komponent wciskać całą zawartość. Zaletą tego rozwiązania jest to, że nie ma to błędów semantycznych jak w tabelce ale nie działa w IE (co było do przewidzenia).div.bg { background: url(dscf5495.jpg) no-repeat center; background-size: cover; -moz-background-size: cover; -o-background-size: cover; display:block; width:100%; height:100%; position:absolute; overflow:auto; }
Przykład rozciągnięcia tła z użyciem CSS3 w Google Chrome |
Na koniec chciałem wspomnieć, że istnieją także możliwości kontroli szerokością tła poprzez JavaScript - jednak nie jest to praktyczne, ponieważ zdarzenie onresize reaguje wolniej niż we Flash'u, no a tym bardziej w CSS3 czy tabelkach - przy czym wydajnościowo także to rozwiązanie jest najgorsze.
3 komentarze:
naprawdę ciekawe zestawienie - dobra robota :)
Ciekawe. :)
Wkradł się drobny ortograf w pierwszym akapicie: powinno być 'niezrobionej'.
Niestety język polski dopuszcza pisanie imiesłowów zarówno razem jak i rozdzielnie z 'nie' ;)
Prześlij komentarz