Magazyn T3
newsy, felietony, testy i tutoriale



Internet Maker

19/07/2007

Efekt rollover w oparciu o elementy div i style CSS

Więcej artykułów autorstwa »
Napisane przez: Włodzimierz Gajda
Tagi:
fe-efekt_rollover_w_oparciu_o_elementy_div_i_style_css.png

Animowane menu strony, którego opcje reagują na wskaźnik myszki, jest bardzo atrakcyjne. W artykule przedstawimy w jaki sposób wykonać takie menu, gdy dysponujemy obrazem narysowanym w GIMP-ie. Kod HTML menu będzie wykorzystywać elementy div oraz arkusze stylów.

Ilustracje, od których rozpoczynamy pracę

Do efektu dynamicznego menu, nazywanego rollover, potrzebne są dwa obrazy o identycznych wymiarach. Obrazy te różnią się wyłącznie w obszarach, które mają podlegać efektowi dynamicznej zmiany.

Pracując w programie GIMP, najlepiej wykonać obraz wielowarstwowy.

Po ukryciu warstwy zawierającej białą poświatę oraz warstw zawierających czarne teksty otrzymamy pierwszy z przedstawionych obrazów.

Gdy włączymy widoczność wszystkich warstw, wtedy ujrzymy drugi z obrazów, który zawiera białą poświatę liter w napisach menu.

Krojenie obrazu

{tlo_1}

Ilustrację służącą do wykonania witryny należy pokroić. Plik XCF otwieramy w programie GIMP, po czym dodajemy prowadnice wyznaczające zasięg opcji menu.

{/tlo}

{tlo_0}

Wykorzystując prowadnice, selekcję prostokątną oraz operacje Edycja | Kopiuj widoczne i Edycja | Wklej jako nowy przygotowujemy jedenaście obrazów.

{/tlo}

{tlo_1}

Obrazy te zapisujemy w plikach: gora.png, dol.png oraz g-0-0.png, g-0-1.png, …, g-2-2.png.

{/tlo}

{tlo_0}

Obrazy z napisami CHORDS, SONGS oraz TABS musimy przygotować podwójnie. Drugą porcję plików stanowiących menu tworzymy po uprzednim włączeniu widoczności warstwy z rozmytą białą otoczką oraz warstw z czarnymi napisami. Ponownie stosujemy prowadnice i technikę kopiuj-wklej. Obrazom z białą otoczką nadajemy przyrostek on: g-1-0-on.png, g-1-1-on.png oraz g-1-2-on.png.

{/tlo}

{tlo_1}

Rysunek zawiera zbiorcze zestawienie wszystkich obrazów, które należy przygotować. Komórki w których przygotowujemy podwójne obrazy są oznaczone kolorami czerwonym, niebieskim i zielonym. Obrazy te będziemy podmieniać po ich wskazaniu.

{/tlo}

Układ strony

Cały projekt wykonujemy stosując układ o stałej szerokości. Element div o identyfikatorze strona stanowi pojemnik na całą treść witryny. Dynamiczne menu, zawierające wszystkie obrazy, znajdzie się w elemencie {stala}div{/stala} o identyfikatorze {stala}naglowek{/stala}.

1
2
3
4
5
6
7
8
<div id=\"strona\">
    <div id=\"naglowek\">
    </div>
    <div id=\"tekst\">
    </div>
    <div id=\"stopka\">
    </div>
</div>

Do osiągnięcia poprawnego układu wystarczą trzy reguły zawierające razem siedem atrybutów CSS:

1
2
3
4
5
6
7
8
9
10
11
12
13
body {
    margin      : 0;
    padding     : 0;
    line-height : 0%;
    text-align  : center;
}
img {
    border : none;
}
#strona {
    margin : 0 auto;
    width  : 800px;
}

Atrybut {stala}text-align{/stala} jest konieczny dla przeglądarki MSIE w wersji 5. Tak wykonany układ będzie poprawnie wyświetlany przez nowe wersje przeglądarek (Firefox 1.5, Opera 7, Netscape 8, Internet Explorer 6), nieco starszą Internet Explorer 5.0 oraz archaiczną Netscape 4.75 (strona będzie brzydka, ale czytelna).

Menu z przylegających obrazów

Obrazy, które tworzą menu, układamy kolejno w bloku div o identyfikatorze naglowek:

1
2
3
4
5
6
7
8
9
10
11
12
13
<div id=\"naglowek\">
    <img src=\"gora.png\" alt=\"\" />
    <img src=\"g-0-0.png\" alt=\"\" />
    <img src=\"g-1-0.png\" alt=\"\" />
    <img src=\"g-2-0.png\" alt=\"\" />
    <img src=\"g-0-1.png\" alt=\"\" />
    <img src=\"g-1-1.png\" alt=\"\" />
    <img src=\"g-2-1.png\" alt=\"\" />
    <img src=\"g-0-2.png\" alt=\"\" />
    <img src=\"g-1-2.png\" alt=\"\" />
    <img src=\"g-2-2.png\" alt=\"\" />
    <img src=\"dol.png\" alt=\"\" />
</div>

Jeżeli w tak przygotowanej stronie usuniemy wszystkie białe znaki pomiędzy elementami img, to otrzymamy gotową stronę WWW. Pozostaje jedynie dodanie efektu wymiany obrazów oraz hiperłączy.

Wymiana obrazów

Reakcję na ruch myszki dodajemy do elementów img, wykorzystując zdarzenia onmouseover oraz onmouseout.

Obrazowi nadajemy identyfikator {stala}id=”img0″{/stala}. Cyfra 0 jest numerem kolejnego obrazu, który będzie podmieniany (obrazy nie podmieniane nie są numerowane).

Zdarzenie onmouseover będzie obsługiwane przez funkcję {stala}rollover_on(){/stala}. Parametrami funkcji są: identyfikator obrazu {stala}img0{/stala} oraz jego numer 0. Do obsługi zdarzenia {stala}onmouseout{/stala} stosujemy funkcję {stala}rollover_off(){/stala} z identycznymi parametrami. Oto kod HTML pierwszej opcji menu z napisem CHORDS:

1
2
3
<img src=\"g-0-0.png\" alt=\"\" />
<img src=\"g-1-0.png\" alt=\"\" id=\"img0\" onmouseout=\"rollover_off(\'img0\', 0);\" onmouseover=\"rollover_on(\'img0\', 0);\" />
<img src=\"g-2-0.png\" alt=\"\" />

Kod opcji SONGS różni się jedynie nazwami plików graficznych, identyfikatorem obrazu (tutaj jest to img1) oraz parametrami funkcji {stala}rollover_on(){/stala} i {stala}rollover_off(){/stala}:

1
2
3
<img src=\"g-0-1.png\" alt=\"\" />
<img src=\"g-1-1.png\" alt=\"\" id=\"img1\" onmouseout=\"rollover_off(\'img1\', 1);\" onmouseover=\"rollover_on(\'img1\', 1);\" />
<img src=\"g-2-1.png\" alt=\"\" />

Wprawdzie przy dwóch parametrach funkcji {stala}rollover_on(){/stala} oraz {stala}rollover_off(){/stala} mamy nieco więcej kodu HTML (ilość kodu można zminimalizować, stosując jeden parametr {stala}this{/stala}), jednak takie funkcje możemy zastosować w dowolnym miejscu kodu HTML do wymiany dowolnych obrazów na stronie.

Hiperłącza

Opcje menu powinny być hiperłączami. W tym celu kod HTML wzbogacamy o trzy elementy {stala}a{/stala}. Elementom {stala}a{/stala} oraz {stala}img{/stala} nadajemy atrybuty {stala}alt{/stala} oraz {stala}title{/stala}. Dzięki temu opcje menu będą dostępne również dla osób korzystających z przeglądarek nie wyświetlających obrazów i nie wykonujących kodu JavaScript.

1
2
3
4
5
<img src=\"g-0-0.png\" alt=\"\" />
<a href=\"index.html\" title=\"CHORDS\">
    <img src=\"g-1-0.png\" alt=\"CHORDS\" id=\"img0\" onmouseout=\"rollover_off(\'img0\', 0);\" onmouseover=\"rollover_on(\'img0\', 0);\" />
</a>
<img src=\"g-2-0.png\" alt=\"\" />

Wstępne pobieranie obrazów

Element {stala}body{/stala} wzbogacamy o obsługę zdarzenia {stala}onload{/stala}. W ten sposób obrazy wykorzystane w menu będą pobierane z serwera przy wejściu na stronę, a nie dopiero po naprowadzeniu wskaźnika myszki na opcję, co mogłoby powodować – przy słabym łączu osoby odwiedzającej lub przeciążeniu sieci – niemiły efekt mrugnięcia lub wyświetlenie ikony brakującego obrazu.

1
<body onload=\"preload();\">

W pliku rollover.js ustalamy liczbę wymieniamy obrazów (w opisywanym zadaniu wymianie podlegają trzy obrazy) oraz wpisujemy ich nazwy:

1
2
3
4
5
6
7
8
9
var rollovers_count = 3;
var filenames_off = new Array;
filenames_off[0] = \"g-1-0.png\";
filenames_off[1] = \"g-1-1.png\";
filenames_off[2] = \"g-1-2.png\";
var filenames_on = new Array;
filenames_on[0] = \"g-1-0-on.png\";
filenames_on[1] = \"g-1-1-on.png\";
filenames_on[2] = \"g-1-2-on.png\";

Sztywne wymiary obrazów

Ostatnim ulepszeniem opisywanego rozwiązania może być ustalenie wymiarów obrazów w arkuszach stylów. Dzięki temu strona będzie miała poprawny układ zanim obrazy zostaną pobrane z serwera.

Każdy obraz wzbogacamy o identyfikator:

1
<img id=\"gora\" src=\"gora.png\" alt=\"\" />

zaś w stylach podajemy jego wymiar:

1
2
3
4
#gora {
    width  : 800px;
    height : 138px;
}

O czym należy pamiętać?

Przygotowując efekt rollover należy mieć na uwadze:

  • wygląd strony w kilku różnych przeglądarkach (starszych i nowszych),
  • zmianę wielkości okna przeglądarki,
  • wstępne pobieranie obrazów zanim użytkownik wskaże opcję myszką,
  • wyświetlanie strony, gdy nie wszystkie obrazy zostały pobrane z serwera,
  • wygląd strony bez obrazów,
  • wygląd strony bez zastosowania stylów,
  • atrybuty alt oraz title umożliwiające poruszanie się po stronie przy wyłączonych stylach i skryptach JS.

Może Cię zainteresować:

  1. GIMP i webmastering: Efekt rollover ze wskaźnikiem wybranej opcji
  2. Efekt okrągłych narożników – Tworzymy nietypową ramkę w CSS
  3. GIMP i webmastering: Przygotowanie obrazów do efektu rollover


O autorze

Włodzimierz Gajda





0 komentarzy


Skomentuj pierwszy!


Zostaw odpowiedź

Twój adres nie zostanie opublikowany. Wymagane pola są oznaczone *

*

Możesz używać tych tagów i atrybutów HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">