GMENU_LAYERS / TMENU_LAYERS

GMENU_LAYERS / TMENU_LAYERS ist eine Erweiterung von »GMENU/»TMENU,was bedeutet, dass die untenstehenden Eigenschaften zusätzliche zudenen von GMENU/TMENU sind.

Der Zweck von xMENU_LAYERS ist es, Menüs mit 2 (oder mehr) Ebenen zuerzeugen, bei denen die zweite (,dritte...) Ebene in einem DHTML-Layerangezeigt wird.

Die meisten Features funktionieren mit allen gängigen Browsern wieNetscape, Microsoft Internet Explorer, Mozilla, Konqueror und Opera.Sie können die Menüs verschachteln wie Sie wollen.

ANMERKUNG: Sie müssen die Bibliothek media/scripts/gmenu_layers.php (für GMENU_LAYERS) und/oder media/scripts/tmenu_layers.php (für TMENU_LAYERS) einbinden, sowie die xMENU_LAYERS auf die nächste Ebene ausklappen, damit das Menü Sinn macht (mit der .expAll-Eigenschaft).

KOMPABILITÄT: MSIE 4+, Netscape 4+ und 6+, Opera 5+, Konqueror

ANMERKUNGEN:

  • Netscape 4 unterstützt für die Layers keine MouseOver-Ereignisse
  • Opera scheint mit dem MouseOut-Ereignis Probleme zu haben, wenn Sie die Maus von einem Element auf ein Layer bewegen. Dann könnte es sein, dass das Ereignis nicht ausgelöst wird, bevor das Layer betreten wird. Das passiert jedoch nur, wenn das Layer sehr dicht am Auslöserelement platziert ist. Ein daraus folgendes Problem könnte zum Beispiel sein, dass der Rollover-Status der Elemente nicht zurückgesetzt wird.
  • Möglicher Bug: Bei verschachtelten Layermenüs wurde bei Opera beobachtet, dass sämtliche Interaktion mit der Seite verweigert wurde, sogar das Anwählen normaler Links. Mit einem einfachen Layermenü mit nur einer Ebene scheint dieses Problem nicht aufzutreten.
EigenschaftDatentypBeschreibungStandard

layerStyle

<DIV>-Tag Parameter

Parameter für die <DIV>-Layer-Tags im HTML-Dokument. Sie werden diese Eigenschaft wahrscheinlich nicht ändern müssen.

Beispiel:
position: absolute; visibility: hidden;

position: absolute; visiblity: hidden;

lockPosition

"x" / "y" / ""

Wenn diese Eigenschaft auf x oder y gesetzt ist, wird das Menü fixiert, sodass es dem Mauscursor nicht folgt (was es normalerweise tut). x oder ygibt jeweils an, dass die summierte Breite (x) bzw. Höhe (y) der x-oder y-Position des Menüs hinzugefügt wird. Das heißt, Sie sollten diesen Wert auf x setzen, wenn Sie ein horizontales xMENU_LAYERS haben wollen, und wenn Sie einvertikales xMENU_LAYERS haben wollen, sollten Sie ihn auf y setzen.

dontFollowMouse

boolean

Wenn diese Eigenschaft gesetzt ist, und wenn ».lockPosition keinen Wert hat (sodass das Layermenü also der Maus folgt), wird das Menü nicht mehr der Maus folgen, aber dennoch an der Stelle erscheinen,an der der Cursor das Auslöserelement berührt hat. Nützlich, wenn Sie nicht die exakte Position der Elemente kennen.

WARNUNG: Sie sollten für Menüs, bei denen diese Eigenschaft aktiviert ist, nicht die Eigenschaft ».displayActiveOnLoad setzen (da die absolute Position des Layers nicht bekannt ist).

lockPosition_adjust

int

Eine Zahl, die auf die Höhe/Breite der Menüelemente addiert wird, um z.B. hspace oder andere Dinge zwischen den Bildern im GMENU_LAYERS zu kompensieren.

lockPosition_addSelf

boolean

Normalerweise werden Breite und Höhe der Elemente (+ »lockPosition_adjust) nach den Rendern des Elements zusammengerechnet. Das ist gut, wenn das Menü nach unten oder nach rechts ausklappt.
Solldas Menü jedoch nach links oder nach oben ausklappen, werden Sie vielleicht die Breite der Elemente vorher addieren wollen. Wenn ja, setzen Sie diese Eigenschaft.

xPosOffset

int

Der Abstand des Menüs von dem Punkt, an dem es aktiviert wurde (wenn ».lockPosition falsch ist) / von der oberen linken Ecke der Seite (wenn .lockPosition wahr ist).

yPosOffset

int

Wie oben, nur für die y-Koordinate.

topOffset

int

Der Abstand der Menüelemente vom oberen Rand des Browsers. Sollte lieber hier gesetzt werden als in der ».layerStyle-Eigenschaft. Muss gesetzt werden, um »directionUp zu benutzen.
Wird benutzt, wenn entweder lockPosition=x oder xPosOffset angegeben ist.

leftOffset

int

Der Abstand der Menüelemente vom linken Rand des Browsers. Sollte lieber hier gesetzt werden als in der ».layerStyle-Eigenschaft. Muss gesetzt werden, um »directionLeft zu benutzen.
Wird benutzt, wenn entweder lockPosition=y oder yPosOffset angegeben ist.

blankStrEqFalse

boolean

Wenngesetzt, werden die Eigenschaften »topOffset, »leftOffset, »xPosOffset und »yPosOffset nur dann als "leer" angesehen, wenn sie wirklich leer sind (und nicht nur 0). Sie sollten diese Eigenschaft aktivieren, wenn Sie mit null-Abständen arbeiten können wollen. Das ist in der Regel der Fall, wenn Sie relative Positionierung verwenden.

directionLeft

boolean

Setzen Sie diese Eigenschaft, wenn die Menüelemente nach rechts ausgerichtet sein sollen (wenn das Menü also zur linken Seite ausklappt).
Funktioniert noch nicht mit Opera, weil ich (Kasper Skårhøj) nicht weiß, wie mit Opera die Breite jedes Layers ausgelesen werden kann.
Aber wenn Sie die Breite des Layers in ».layerStyles setzen, wird es trotzdem auf jeden Fall funktionieren.

directionUp

boolean

Setzen Sie diese Eigenschaft, wenn die Menüelemente nach unten ausgerichtet sein sollen (das Menü als nach oben ausklappen soll).

setFixedWidth

int

Bei einem GMENU_LAYERS ist die Breite und Höhe der Elemente in der Regel durch die Ausmaße des Bildes bekannt. Bei TMENU_LAYERS kann das nicht auf diese Art bestimmt werden. Daher können Sie .setFixedWidth und.setFixedHeight verwenden, um diese Werte auf eine angemessene Zahl zusetzen. Das kann natürlich immer noch vom Browser vereitelt werden,wenn die Schrift zu groß wird usw.

Alternativ werden Sie vielleicht auch die Eigenschaft »relativeToTriggerItem benutzen wollen,die Ihr Menü-Layer relativ zum auslösenden Element platziert. Das hat manchmal allerdings Nachteile. Der Mittelweg wäre, ein Menü zuverwenden, in dem ».lockPosition leer und ».dontFollowMouse wahr ist.Dann müssen Sie nur eine X- oder Y-Koordinate zum Folgen angeben und das Element erscheint dort, wo die Maus auf den Auslöser trifft.

ANMERKUNG: Diese Eigenschaft ist aktiv, wenn sie NICHT leer ist. Wenn dieser Wert auf 0 gesetzt wird, heißt das, dass die Menüelemente keine Breite haben.

bordersWithin

l,t,r,b,l,t

Beschränkt die Maße des Layers auf diese Werte in Pixeln. 0 heißt "nicht gesetzt".

Syntax: Integerliste, im Uhrzeigersinn ausgewertet: Links, Oben, Rechts, Unten, Links, Oben.

displayActiveOnLoad

boolean

Wenn gesetzt, wird das Untermenü-Layer des aktiven Menüelements beim Laden der Seite geöffnet. Wenn ».freezeMouseover ebenfalls gesetzt ist, und für die Hauptmenüelemente RO angegeben ist, wird das Menüelement, welches zu dem angezeigten Untermenü gehört, ebenfalls angezeigt.

Eigenschaften:
.onlyOnLoad (boolean)
Wenn gesetzt, wird das aktive Element nur beim Laden angezeigt. Die Ansicht wird nicht beim Mausaustritt aus anderen Elementen wiederhergestellt.

WARNUNG: Wenn Sie xMENU_LAYER-Elemente verschachteln, achten Sie darauf, dass alle übergeordneten Menüs diese Eigenschaft ebenfalls gesetzt haben.

freezeMouseover

boolean

Wenn gesetzt, wird ein MouseOut-Effekt eines Hauptmenüelements nicht beim Mausaustritt entfernt, sondern beim Mauseintritt in ein anderes Element.

Eigenschaften:
.alwaysKeep (boolean)
Wenn gesetzt, bleibt das gefreezte Element immer da, auch wenn das Untermenü wieder versteckt ist.

hideMenuWhen
NotOver

int+

Wenn gesetzt (>1) wird das Menü sich selbst verstecken, wenn der Cursor vom Menü wegbewegt wird. Der Wert dieses Parameters gibt an, wie weit sich der Cursor vom Menü entfernt, bis es unsichtbar wird.

hideMenuTimer

int+

Dies gibt an (in Millisekunden), wie lange das Menü wartet, bis es unsichtbar wird, wenn ».hideMenuWhenNotOver gesetzt ist.

dontHideOn
MouseUp

boolean

Wenn gesetzt, werden die Menü-Layers nicht versteckt, wenn die Maus geklickt wird. Nützlich, wenn die Menüelemente die Seiten in einen anderen Frame laden.

layer_menu_id

string

Verwenden Sie diese Eigenschaft, wenn Sie einem Menü auf dieser Seite einen bestimmten Namen geben wollen. Werden Sie wahrscheinlich nicht brauchen.

ACHTUNG: Verwenden Sie keine Unterstriche und Sonderzeichen, sondern nur alphanumerische Zeichen.

Zufälliger 6-Zeichen-
Hashstring

relativeTo
TriggerItem

boolean

Diese Eigenschaft erlaubt es Ihnen, die Menü-Layers relativ zum auslösenden Element zu platzieren. Sie sollten sich jedoch der folgenden Dingebewusst sein:

  • Dies funktioniert nicht mit Netscape 4 - Als Position des Auslösers wird 0 errechnet werden und daher ist die Position all Ihrer Menüs 0/0.
  • Dieses Feature wrapt das Menü in einige <div>-Tags genau bevor dasgesamte Menü durch den .wrap-Code (für GMENU_LAYERS), bzw. den .allWrap-Code (für TMENU_LAYERS) gewrapt wird.
    Unterm Strich:
    1. Wenn Ihr Menü horizontal ist, formatieren Sie Ihre Menüelemente immer in einer Tabelle, damit wegen der <div>-Tags keine Zeilenumbrüche dargestellt werden.
    2. Vergewissern Sie sich, dass das jeweilige Wrappen der Tabellenzellen mit den .wrap/.allWrap-Eigenschaften gemacht wird.
  • Funktioniert nur effektiv mit dem ersten xMENU_LAYER einer Verschachtelung. Für weitere xMENU_LAYERS verwenden Sie bitte ».relativeToParentLayer.

Wenn gesetzt, funktionieren die Eigenschaften ».xPosOffset, ».yPosOffset und ».lockPosition nicht (die Eigenschaften ».directionLeft, ».directionUp, ».topOffset und ».leftOffset sind immer noch aktiv).

Zusätzliche Eigenschaften:
.addWidth = Fügt die Breite des Auslöserelementes hinzu.
.addHeight = Fügt die Höhe des Auslöserelementes hinzu.

relativeTo
ParentLayer

boolean

Wenn gesetzt, wird das Layer relativ zum vorhergehenden, übergeordneten Layer in einer verschachtelten Reihe von xMENU_LAYER positioniert. Im Grunde wird der relativen Position des übergeordneten Menüs nur der Abstand des derzeitigen Menüs hinzugefügt.

ACHTUNG: Diese Eigenschaft macht nur Sinn, wenn Sie wirklich ein übergeordnetes xMENU_LAYER haben.

Zusätzliche Eigenschaften:
.addWidth = Fügt die Breite des übergeordneten Layers hinzu
.addHeight = Fügt die Höhe des übergeordneten Layres hinzu.