Zum Inhalt springen

gmenu layer 2. Ebene verschiebt sich

Erstellt am 28. Januar 2009 · 6 Antworten · letzte Antwort am 13. Juli 2009

Tags: Frage

mibmib ·

Hallo Forum,

ich habe mir mit Typoscript ein LayerMenu gebaut welches prinzipiell gut funktioniert. Ich habe nun aber das Problem, dass sich, wenn ich das Browserfenster verkleinere oder vergrößere, das Untermenu verschiebt. Das ist bei anderen GMENU_LAYERS genauso nur dass ich das Untermenü nicht nur bei Hover einblende sondern immer wenn der übergeordnete Link aktiv ist. Sobald ich "triggere" wird es wieder an die richtige position gesetzt. Ich möchte aber eben, das es sich auch aktualisiert wenn ich den Browser verkleinere oder vergrößere.

Hier mal det typoscript:

page.includeLibs.gmenu_layers = media/scripts/gmenu_layers.php

temp.NAV = HMENU
temp.NAV.1 = GMENU_LAYERS
temp.NAV.1 {
  
  
  layerStyle =position:absolute;VISIBILITY:hidden; 
  xPosOffset = -30
  lockPosition = y
  expAll=0
  leftOffset = 15
  topOffset = 10
  hideMenuWhenNotOver = 1
  hideMenuTimer=250
  relativeToTriggerItem = 1
  relativeToParentLayer = 1	
  
  
  
  #layerStyle = position: relative; visibility: hidden;
  #xPosOffset = -290
  
  lockPosition = x
  #expAll=0
  displayActiveOnLoad = 1
  #freezeMouseover = 1
  #hideMenuWhenNotOver = 3000
  #hideMenuTimer = 3000
  dontHideOnMouseUp = true
  #leftOffset = 280
  #topOffset = 200
  wrap = <ul class="mainNav">|</ul>
}

temp.NAV.1.NO {
  
   XY = 230, 35     
   wrap = <li class="firstMenuItem"> | </li> |*| <li class="secondMenuItem"> | </li> |*| <li class="thirdMenuItem"> | </li>
    
   9 = IMAGE
   9.file = fileadmin/template/img/mainNavBack.gif
   9.offset = 0, 10
     
   10 = TEXT
   10.text.field = title
  #10.text.case = upper
   10.antiAlias = 1
   10.fontFile = fileadmin/template/fonts/FeSaNo__.pfb
   10.fontSize = 11
   10.fontColor = #005797 || #6d9500|| #781d7d
   10.offset = [11.w]-10, 28
   10.align = center
   10.niceText = 0
      
   11 = BOX
   11.dimensions = 0, 0, 230, 10
   11.color = #005797 || #6d9500|| #781d7d
     
   20 < .10
   }
   
temp.NAV.1.RO < temp.NAV.1.NO
temp.NAV.1.RO {
    	10.fontColor = #005797 || #6d9500|| #781d7d
    	20. >
    	20 < .10

    	}
    temp.NAV.1.RO = 1
      
temp.NAV.1.ACT < temp.NAV.1.NO
temp.NAV.1.ACT {
    	XY = 230, 75    
    	10.fontColor = #005797 || #6d9500|| #781d7d
    	10.offset = [11.w]-10, 68
    	
    	20 < .10 
        11 = BOX
        11.dimensions = 0, 0, 230, 50
        11.color = #005797 || #6d9500|| #781d7d
      
       9 = IMAGE
       9.file = fileadmin/template/img/mainNavBack.gif
       9.offset = 0, 50
      
    	}
    temp.NAV.1.ACT = 1
  
}

temp.NAV.2 = TMENU
temp.NAV.2.wrap = <ul class="tmenuLayer2">|</ul>

temp.NAV.2.NO {
  10 = TEXT
#  linkWrap = | |  |*| | | |*| | |
  allWrap = <li class="subNavTextLink">| | </li> 
  XY = [10.w]+10, 14
  10 = TEXT
  10.text.field = title
  10.offset = 5,10
}

Ich möchte nun wissen ob sich das irgendwie beheben lässt. Ich kann sicher auch einfach ein GMENU machen und als Subebene ein TMENU. Das ist mir dummerweise erst jetz eingefallen und würde bedeuten, dass ich das komplette Menü umbauen muss. Vielleicht gehts auch einfacher.

mfg mibmib.

mibmib ·

Also ich habe mich jetz noch etwas mehr belesen und festgestellt dass ,das Positionierungsproblem daran liegt dass der zweite Layer direkt nach dem BODY Tag reingebastelt wird und nicht, wie es sinnvoll wäre in der div Box meines Menüs. Darum richtet sich das Untermenü immer nach dem body aus und nicht nach dem Menucontainer...

Vielleicht hat jemand ne idee. Man könnte die gmenu_layer.php umschreiben denke ich. Mir wär aber eine schnelle CSS bzw. Typoscript Lösung lieber.

mfg mibmib.

mibmib ·

Ich habe mein Problem leider immer noch nicht lösen können. Ich habe nun die gmenu_layer.php soweit anpassen können, dass das Layer-Menü (die 2te Ebene) nicht direkt nach dem body-tag eingefügt wird sondern in meinem Menücontainer. Es ist notwendig, dass der Layercontainer zwingend über meiner Hauptnavigation liegen muss. Eine relative Positionierung meines Layers (mit Leayer meine ich die 2te Ebene die beim gmenu_layer auklappt) würde mein Problem beheben, allerdings kann man keinen z-index vergeben wenn die div Box nicht absolut positioniert ist. Ich habe nun gelesen, dass man auch einen absolut positionierten Div mit einem relativ Posiionierten Div umschließen kann. Das funktioniert nun auch soweit. Mein Layer mit der zweiten Menübene wird absolut (mit z-index) über dem hauptmenü dargestellt. Darum wrapt ein weiterer Div der relativ positioniert ist. Jetz kann ich das Browserfensetr skalieren und die 2te Menüebene bewegt sich mit und bleibt so immer auf der gleichen position. Jetz hover ich aber über das Hauptmenü und schwupps wird das Layerenu wieder an die Anfangswerte gesetzt und ist demnach wiederum nicht dort wo es sein soll. Ich müsste jetzt die triggerfunktion der hauptmenüpunkte ausschalten oder jemand hat eine andere Lösung für meine Probelm. Im zweifelsfall muss ich das ganze Menü nochmal neu bauen aber das will ich natürlich vermeiden. Ich bin der Meinung das das irgendwie gehen muss. So aussergewöhnlich ist mein Menü nicht und Typo3 sollte das bewerkstelligen. Vielliecht hat ja jemand verstanden was ich will und einen Tip parat. Ich bin mittlerweile etwas "missgestimmt" wäre also dankbar wenn mit jemand helfen könnte?!?

mfg mibmib

pow ·

Habe auch gerade das gleiche Problem. Da die Seite mittig ist (wie die meisten) klappts nicht so ganz wenn man das Browserfenster vergrößert/verkleinert.
Den BODY-Tag habe ich ebenfalls eine feste Breite gegeben. Nutzt aber nur minimal etwas.

Streetone ·

Hallo,

habe ebenfalls das gleiche Problem. Meine Internetseite ist mittig vom Bildschirm ausgerichtet. Das Menü sollte es somit auch sein...

Gibt es schon eine Lösung?

@mibmib: Was hast du an der PHP Datei geändert, dass das Layer im Menü-Div eingefügt wird?

pow ·

Lösung:

der Bodytag benötigt "position:relative".
Hat bei mir 1A funktioniert!

Grüße