Zum Inhalt springen

dynamisches css für menüausgabe

Erstellt am 24. August 2007 · 3 Antworten · letzte Antwort am 24. August 2007

Tags: HTML & CSS, Frage

teddy86 ·

hi!

in meinem menü habe ich zu einzelnen menüpunkten untermenüs, die per css um 60px nach oben geschoben werden. je nach anzahl der untermenüpunkte variiert diese zahl aber. pro menüpunkt kommen etwa 12px dazu.

nun wollte ich per typo3 prüfen wieviele menüpunkte im untermenü sind und entsprechend den wert in meiner css datei dynamisch verändern. weiß jemand wie dies funktioniert??

1. untermenüpunkte zählen
2. neue distanz errechnen umd die das untermenü nach oben verschoben wird
3. änderung in css datei dynamisch vornehmen

wo wir schonmal dabei sind:

die hauptmenüpunkte hätte ich gerne durchnummerriert: 1. startseite 2. fußball 3. mannschaft...

auch hier müsste also rausgefunden werden: um den wievielten menüpunkt es sich momentan handelt, und dann die zahl vor den link geschrieben werden.

kann mir jemand helfen, ich stehe total auf dem schlauch...

vielen dank
teddy

teddy86 ·

damit läuft das dann wohl mit der nummerierung. abver wie schauts aus mit dem css wert der in der css datei je nach anzahl der menüeinträge geändert werden soll?ß

schonmal dankeschön
teddy

teddy86 ·

so, ich habe nun folgenden code für das menü verwendet:

marks.MENU = HMENU
	marks.MENU {
	   entryLevel = 0
	   1 = TMENU
	   1 {
		wrap = <ul>|</ul>
		noBlur = 1
		NO = 1
		NO{
		  # füllen der verwendetetn Register
		  before.cObject=LOAD_REGISTER
		  before.cObject{
		    # Führende 0 für falls noch weniger als 10 Menüpunkte ausgegeben wurden
		    leadingZero.cObject=TEXT
		    leadingZero.cObject{
		      value=0
		      if.value=9
		      if.isLessThan.cObject=TEXT
		      if.isLessThan.cObject{
		      value={register:mainMenuNumber}
		      insertData=1
		    }
		  }
		  # Counter der die Hauptmenüpunkte zählt
		  mainMenuNumber.cObject=TEXT
		  mainMenuNumber.cObject{
		    value={register:mainMenuNumber}+1
		    insertData=1
		  }
		  mainMenuNumber.prioriCalc=intval
		  # initialisieren des Counters für die 2. Ebene
		  subMenuNumber<lib.menu.1.NO.before.cObject.mainMenuNumber
		  subMenuNumber.cObject.value=0
		  # initialisieren des Counters für die 3. Ebene
		  subSubMenuNumber<lib.menu.1.NO.before.cObject.mainMenuNumber
		  subSubMenuNumber.cObject.value=0
		  }
		  # Die Nummerierung soll innerhalb des Link tags erscheinen
		  #ATagBeforeWrap=1
		  linkWrap=<span class="orange">{register:leadingZero}{register:mainMenuNumber}</span> |
		  # insertData auf den allStdWrap setzen, da linkWrap keine stdWrap unterstützung hat.
		  allStdWrap.insertData=1
		  wrapItemAndSub=<li>|</li>
		  }
		
		ACT = 1
		ACT < .NO
		ACT.ATagParams = class="active"
	   }
	   2 = TMENU
	   2 {
		wrap = <span class="orange">01.1</span><ul>|</ul>
		noBlur = 1
		NO = 1
		NO.wrapItemAndSub = <li>|</li>
		NO.ATagTitle.field = title
	   
	}

problem bei der zweiten ebene: die vorangestellte zahl ist hier hardgecodet (01.1) ich hätte es gerne a la {register:leadingZero}{register:mainMenuNumber}.1 für die zweite ebene, sodass die nummer des parent elementes ausgegeben wird plus eine .1 angehängt. die .1 muss dann nicht weiter gezählt werden, sondern kann so stehen bleiben. aber wie bekomme ich die 01, 02, 03 etc. der parent links vor die XX.1???

vielen dank für die hilfe!!! der code scheint mir noch ein bisschen wulstig, kann man den noch weiter abspecken?

lg
teddy