MenuTree

Cechą charakterystyczną tego menu, jest jego relatywność w stosunku do pozostałej zawartości strony. To znaczy, niezależnie od tego w jakim miejscu dokumentu umieścimy menu, będzie się ono zachowywało w taki sposób, że rozwijanie poszczególnych elementów spowoduje automatyczne przesuwanie się w dół pozostałej części menu, jak również pozostałej zawartości strony.
Ponieważ, w przeglądarkach NS 4.x i Opera6, rozwiązanie takie wymagałoby specjalnej konstrukcji (warstwowej) nie tylko samego menu lecz również pozostałej zawartości strony (co w zależności od tej zawartości mogłoby rodzić dodatkowe problemy wymagające "indywidualnego" podejścia), zastosowano tutaj pewien kompromis.

W ten sposób, nie ignorujemy całkowicie użytkowników NS4 i Opery6, a tylko pozbawiamy ok. 5% internautów efektu rozwijania. W zamian za to, otrzymujemy menu o zwartym i w miarę krótkim kodzie, które łatwo jest osadzić w dowolnym miejscu nowo tworzonego lub już istniejącego dokumentu.

Całe menu, to zwykła lista <ul>. Działanie skryptu polega tylko na pokazywaniu i ukrywaniu odpowiednich fragmentów.
Pozycje podrzędne to listy zagnieżdżone (listy w liście). W ten sposób możemy uzyskać większą ilość poziomów o dowonej strukturze. Jak zagnieżdżać listy, dowiesz się analizując (w źródle tej strony) poniższy przykład, w którym menu zagłębia się do trzeciego poziomu.

W dokumencie, można umieścić dowolną ilość niezależnych od siebie instancji menu. Jak widać, w tym dokumencie znajdują się dwie takie instancje, przy czym każda z nich ma odmienną strukturę i wygląd (grafika, czcionki, wcięcia).

Nazwa zmiennej obiektowej, reprezentującej menu, ma taką samą nazwę jak id danej listy z przedrostkiem Obj_.
Korzystając ze zmiennej obiektowej, możemy dla każdego menu wywołać dwie metody:

Na przykład, jeżeli mamy listę <UL id="Menu1">, to wywołanie metody unfold() dla tej listy, będzie wyglądałoby następująco:

Obj_Menu1.unfold()

Jednak aby w pełni zabezpieczyć się przed błędami mogącymi wystąpić w przeglądarkach nie obsługujących tego skryptu, wywołanie takiej metody powinno wyglądać następująco:

if(isTree)Obj_Menu1.unfold()




Jak umieścić menu w dokumencie

Wszystkie elementy tablicy, poza pierwszym, możemy zastąpić pustym łańcuchem ("").
Ostatni element może zostać pominięty. W takim przypadku, szerokość wcięcia będzie domyślnie wynosić 15px. Jest to minimalna szerokość wcięcia, tak więc wstawienie tutaj wartości mniejszej niż 15, nie przyniesie żadnego skutku.