[TYPO3-german] horizontales GMENU Positionierung 2. Ebene

astrid haubold astridhaubold at gmx.net
Mon Feb 26 02:36:01 CET 2007


Super, vielen Dank! Das war genau das Richtige. Unten noch wie ich's 
genau gemacht habe.
Dankeschön nochmal und viele Grüße!
Astrid

Setup:
temp.menu = HMENU
temp.menu {
     stdWrap.wrap = <div id="menu" | </div>
     1 = GMENU
     1 {
         wrap = <ul class="menu">|</ul>
         NO = 1
         NO {
             allWrap = <li>|</li>
             XY = [10.w]+12,18
             10 = TEXT
                10 {
     	          fontFile = {$navi_font}
     	          fontSize = {$menu1_textsize}
     	          fontColor = {$menu1_color}
     	          text.field = title
                   offset = 0,15
                   spacing = 0
                   align = left
                   niceText = 1
    }
}
    RO < .NO
    RO = 1
    RO {
    10.fontColor = {$menu1_color_h}
}
    ACT < .NO
    ACT = 1
    ACT {
       allWrap = <li>|
       10.fontColor = {$menu1_color_a}
      }
}
     2 = GMENU
     2 {
         wrap = <ul>|</ul></li>
         NO = 1
         NO {
             allWrap = <li>|</li>
             XY = [10.w]+12,15
             10 = TEXT
             10 {
     	
     	      fontSize = {$menu2_textsize}
     	      fontColor = {$menu2_color}
     	      text.field = title
               offset = 0,15
               spacing = 0
               align = left
               niceText = 1
    }
}
      RO < .NO
      RO = 1
      RO {
        10.fontColor = {$menu2_color_h}
      }
      ACT < .NO
      ACT = 1
      ACT {
        allWrap = <li>|</li>
        10.fontColor = {$menu2_color_a}
    }
  }
}

das dazugehörige CSS:
#menu {
	position:absolute;
	z-index:200;
	top:70px;
	left:208px;
}
.menu li {
	position:relative;
	display:block;
	float:left;
}
.menu li ul {
	position:absolute;
	top:20px;
	margin-left:-39px;
}
.menu li ul li {
	float:none;
	display:block;
}

JoH asenau schrieb:

>>ich möchte zu einem horizontalen GMENU eine 2. Ebene so positionieren,
>>dass die Punkte der 2. Ebene vertikal direkt unter dem jeweils
>>zugehörigen Punkt der 1. Ebene stehen.
>>
>>Die Position soll dieselbe sein wie bei
>>GMENU_LAYERS, relativeToTriggerItem = 1
>>ich möchte das Ganze aber gerne ohne Javascript.
>>
>>Vielleicht denke ich falsch und es ist banal, bisher habe ich aber
>>nichts gefunden. Kann mir jemand helfen?
> 
> 
> Mein Ansatz wäre ein gemeinsamer Container für den Hauptpunkt und seine
> Unterpunkte. Die einzelnen Container der inaktiven und aktiven Punkte kannst
> Du dann mit "float" oder "position:absolute" nebeneinander positionieren.
> Dabei ergibt sich jedoch ggf. das Problem, daß der darunterliegende Inhalt
> nach unten verschoben würde, weswegen "position:absolute" vermutlich
> unproblematischer sein dürfte.
> 
> temp.blah = HMENU
> temp.blah {
>     1 = GMENU
>     1 {
>         wrap = <ul class="menu_level1">|<li class="clearer"><!-- 
> DUMMY--></li></ul>
>         NO = 1
>         NO {
>             allWrap = <li>|</li>
>         }
>         CUR = 1
>         CUR {
>             allWrap = <li class="current">|</li>
>         }
>         CURIFSUB = 1
>         CURIFSUB {
>             allWrap = <li class="current">|
>         }
>         ACT = 1
>         ACT {
>             allWrap = <li class="active">|
>         }
>     }
>     2 = GMENU
>     2 {
>         wrap = <ul class="menu_level2">|</ul></li>
>         NO = 1
>         NO {
>             allWrap = <li>|</li>
>         }
>         CUR = 1
>         CUR {
>             allWrap = <li class="current">|</li>
>         }
>     }
> }
> So in der Art.
> Zu beachten ist, der "offene" Wrap bei ACT und CURIFSUB für die 1. Ebene.
> Der wird dann durch den Wrap der 2. Ebene <ul>|</ul></li> geschlossen.
> Der DUMMY wird benötigt, um das "float" per "clear:both" wieder aufzuheben.
> 
> Positionieren kannst Du das jetzt z.B. mit:
> 
> .menu_level1 li {
>     display:block;
>     float:left;
> }
> 
> so geht's auch noch
> 
> temp.blah = HMENU
> temp.blah {
>     1 = GMENU
>     1 {
>         wrap = <ul class="menu_level1">|</ul>
>         NO = 1
>         NO {
>             allWrap = <li class="uid{elementUid}">|</li>
>             subst_elementUid = 1
>         }
>         CUR = 1
>         CUR {
>             allWrap = <li class="uid{elementUid} current">|</li>
>             subst_elementUid = 1
>         }
>         CURIFSUB = 1
>         CURIFSUB {
>             allWrap = <li class="uid{elementUid}" current>|</li>
>             subst_elementUid = 1
>         }
>         ACT = 1
>         ACT {
>             allWrap = <li class="uid{elementUid}" active>|</li>
>             subst_elementUid = 1
>         }
>     }
>     2 = GMENU
>     2 {
>         wrap = <ul class="menu_level2">|</ul></li>
>         NO = 1
>         NO {
>             allWrap = <li>|</li>
>         }
>         CUR = 1
>         CUR {
>             allWrap = <li class="current">|</li>
>         }
>     }
> }
> 
> und im CSS dann die absolute Positionierung:
> 
> .menu_level1 .uid123 {
>     position:absolute;
>     left:0px;
>     top:0px;
> }
> 
> 
> .menu_level1 .uid456 {
>     position:absolute;
>     left:120px;
>     top:0px;
> }
> 
> .menu_level1 .uid789 {
>     position:absolute;
>     left:250px;
>     top:0px;
> }
> 
> Wobei sich das Problem mit dem nach unten verschobenen Content auch für's
> erste Beispiel lösen läßt, indem Du beispielsweise den <ul> Container der
> ersten Ebene absolut positionierst und dann die Elemente darin per "float".
> Der nachfolgende Content muß in jedem Fall per padding oder margin nach
> unten verschoben werden, wenn Du absolut positionierst.
> 
> HTH
> 
> Joey
> 



More information about the TYPO3-german mailing list