Jest to blog poświęcony nowoczelnym technologiom ułatwiającym tworzenie aplikacji internetowych. Znajdziesz tutaj porady na temat CSS3, JavaScript, designu, web-usability, standardów W3C.
Cześć! Nazywam się Michał Środek. Z zawodu programista php, z zamiłowania gitarzysta oraz fanatyk GNU/Linuksa(openSUSE® w laptopie). W branży aplikacji internetowych od 9 lat. Prywatnie bez dzieci i kota.
Pracuję wciąż nad własnym elastycznym i wydajnym frameworkiem MVC, kilkoma portalami internetowymi oraz mniejszymi bibliotekami php. Czekam na wasze opinie, zgłoszenia błędów oraz pomysły na dalszy rozwój.
Ta część strony jest w trakcie budowy a moje prace tymczasowo niedostępne.
W przypadku pytań, ofert pracy oraz ciekawych pomysłów proszę się ze mną kontaktować. Możesz mnie znaleźć i wysłać PW na php.pl(SHiP), jamendo.com(michalsrodek), goldenLine.pl, facebook.com lub nk.pl
Podczas tworzenia animacji do mojej gry, nie zawsze będę używał kształtów generowanych przez JavaScript. Dobrze byłoby czasami stworzyć jakąś bardziej zaawansowaną animację w oparciu o grafiki rastrowe. W tym celu używa się tzw. Sprite’ów, czyli plików z poszczególnymi klatkami animacji umieszczonymi obok siebie. Zanim jednak przejdziemy do dalszego pisania gry, chciałbym przedstawić jak w prosty sposób użyć sprite’ów do optymalizacji stron internetowych.
Klasycznym przykładem jest menu oparte o grafikę. Zawsze jest problem ze zdarzeniem najechania myszki. Podczas pierwszego najechania grafika musi się załadować co powoduje opóźnienie zmiany tła.
Programiści różnie sobie z tym radzą, często w bardzo dziwny sposób(np. tworząc preloadery w JavaScript). Rozwiązanie jest dużo, dużo prostsze.
Pierwszym krokiem jest stworzenie grafiki zawierającej wszystkie elementy.
Zamiast operować na kilku plikach modyfikujemy położenie tła.
#menu li{ background: #491312 url('images/menu.png'); } #menu li:hover{ background: #820403 url('images/menu.png'); background-position:0px 35px; } #menu li.active{ background: #261f1f url('images/menu.png'); background-position:200px 0px; } #menu li.active:hover{ background: #000 url('images/menu.png'); background-position:200px 35px; }
Poza widocznym gołem okien usprawnieniem menu, dodatkowo odciążyliśmy serwer. Pierwsza wersja strony generowała aż 4 zapytania do serwera, druga tylko jedno. W prostych projektach jest to mało ważne, lecz w przypadku np. google.com jest to ogromny wyciek transferu. Sprawdzaliście kiedyś kod html google.com i ilość odwołań strony głównej do oddzielnych plików? Grafika w google.com jest upchana do 2 plików. Pierwszym jest logo, drugim zestaw ikon przycisków itp. Wygląda to tak.
W jakich sytuacjach używać sprite’ów? Zdecydowanie gdy mamy do czynienia z ikonami oraz drobnymi elementami wyglądu strony. Nie ma sensu łączyć dużych grafik lub zdjęć.
Skoro już mowa o optymalizacji to zamiast napisać:
background: #000 url(‚images/menu.png’);
background-position:200px 35px;
można skrócić do:
background: #000 url(‚images/menu.png’) 200px 35px;
Pozdrawiam
Komentarz by kilas — 18 maja 2010, 20:34
Dziękuję za wersję zoptymalizowaną. Moim celem było ukazanie background-position ponieważ chyba niewielu o nim w ogóle słyszało.
Pozdrawiam
Komentarz by Michał Środek — 18 maja 2010, 20:51
W ogóle dużo osób nie wie, że w tle można ustawić coś po za grafiką lub kolorem
I tak przy okazji jak piszesz 0px, 0em nie musi podawać jednostki wystarczy np. background-position: 0 35px;
Komentarz by Maciej Wiczołek — 18 maja 2010, 21:47
bardzo fajny artykul. troszke sie o sprite’ach dowiedzialem i fajna sprawa. bede musial wyprobowac.
Komentarz by tomek tomkowy — 23 maja 2010, 14:12
Od zawsze irytowało mnie czekanie na załadowanie się :hovera
Komentarz by Oskar Wójcicki — 27 maja 2010, 22:17
CSS sprites to nie tylko rozprawienie się z :hover (co często jest męczące jak menu jest obrazkowe i znika po najechaniu kursorem), ale także redukcja żądań http, ograniczenie wielkości grafik, szybsze ładowanie się strony i kilka innych
Komentarz by Vokiel — 6 lipca 2010, 13:44
@Vokiel: przedostatni akapit artykułu
. :hover jest tutaj zaprezentowany jako przykład praktycznego użycia gdzie gołym okiem(dosłownie) widać różnicę w działaniu strony.
Komentarz by Michał Środek — 6 lipca 2010, 15:01
Bardzo fajny artykuł, przeczytałem go u Ciebie już kiedyś i od tamtego czasu korzystam ze sprite-ów jak najczęściej.
Teraz przypadkowo wpadłem na ten artykuł po raz ponownie, to napisał komentarz
Komentarz by haz — 4 sierpnia 2010, 19:06
Fajny artykuł, dotychczas nie wiedziałem o możliwości ustawienia tła poza element, albo wiedziałem, jednak nie myślałem, aby tak to wykorzystać
Komentarz by godlark — 21 sierpnia 2010, 15:53