Zum Inhalt springen

tmenu_layer problem mit zentrierter Seite position absolute

Erstellt am 4. November 2010 · 3 Antworten · letzte Antwort am 5. November 2010

Tags: Frage

MohnSemmel ·

Hallo,

ich hab irgendwie ein Problem mit der Positionierung bei einem tmenu_layer. Meine Seite ist in einem DIV gewrapped, das mit position: absolute im Browser zentriert wird.

div#overall-container {
	position: absolute;
	width: 974px;
	left: 50%;
	margin-left: -487px;
	font-family: Arial, sans-serif;
}

Das muss so sein, weil in dem Container wieder Elemente mit position: absolute positioniert werden müssen.

TYPO3 setzt aber die Layers außerhalb dieses Containers direkt nach dem bodytag, womit sich position: absolute auf den Browser und nicht den Container bezieht. Mein Menü:

navigation.nav-home-center = HMENU
navigation.nav-home-center {
	1 = TMENU_LAYERS
	1 {
      wrap = <div id="nav-center-wrapleft"></div><div class="nav-home-lvl1-seperator"></div>|<div id="nav-center-wrapright"></div>
  		layerStyle = position:absolute;VISIBILITY:hidden;
      lockPosition = y
       		relativeToTriggerItem = 1
  		hideMenuWhenNotOver = 80
  		hideMenuTimer = 1000
  		expAll = 1
  		leftOffset = 330
  		topOffset = 40
      NO.allWrap = <div class="nav-home-lvl1">|</div><div class="nav-home-lvl1-seperator"></div>
      NO.ATagBeforeWrap = 1
      NO.linkWrap = <span>|</span>
      NO.stdWrap.htmlSpecialChars = 0
   }
   2 = TMENU
   2 {
      wrap = |
      NO.allWrap = <div class="nav-home-lvl2">|</div>
      NO.ATagBeforeWrap = 1
      NO.linkWrap = <span>|</span>
      NO.stdWrap.htmlSpecialChars = 0
   }
}

Das hat zur Folge, dass natürlich bei unterschiedlicher Bildschirmauflösung bzw. Browserfenstergröße das Untermenü horizontal immer an einer anderen Stelle erscheint.

Kann mir da jemand auf die Sprünge helfen?

LG
Semmel

etux ·
MohnSemmel schrieb

... das mit position: absolute im Browser zentriert wird.

Eine schlechte Lösung – Teile der Seite werden unerreichbar bei einem schmalen Viewport. Besser Du nimmst Margin (auto) dafür.

MohnSemmel schrieb

Das muss so sein, weil in dem Container wieder Elemente mit position: absolute positioniert werden müssen.

Das ist so nicht ganz richtig. Auch „position: relative“ etabliert ein „Containing Block“.

MohnSemmel schrieb

TYPO3 setzt aber die Layers außerhalb dieses Containers direkt nach dem bodytag ...

Vielleicht hilft Dir das hier:
http://www.typo3forum.net/forum/typo3-4-x-fragen-probleme/19973-layer-menue-x-ten.html

MohnSemmel ·

Hallo Emil,

vielen Dank für die schnelle Antwort, hat so geklappt mit

page.bodyTagCObject = HTML
page.bodyTagCObject.value = <body onload="T3_onloadWrapper();"><div id="main-container">

Zu "position: absolute" gebe ich dir "absolute" 😉 recht, ich mache normalerweise immer margin auto. ABER: Wenn ich Elemente mit Hilfe von z-index überlappend positionieren muss geht das imho nur mit "position: absolute". Und damit sich eben das positionierte Element im Container auch am Container ausrichtet, und nicht am Browser, muss das Elternelement auch "position: absolute" sein!

LG
Semmel

etux ·
MohnSemmel schrieb

vielen Dank für die schnelle Antwort, hat so geklappt ...

Bitte, gerne.

Aber nochmal:

MohnSemmel schrieb

Wenn ich Elemente mit Hilfe von z-index überlappend positionieren muss geht das imho nur mit "position: absolute". Und damit sich eben das positionierte Element im Container auch am Container ausrichtet, und nicht am Browser, muss das Elternelement auch "position: absolute" sein!

Da liegst Du bei allen Punkten falsch. 😉

Dein Layout ist ziemlich breit. Ein zentrieren mit Hilfe von „position: absolute;“ ist so das Schlimmste, was Du Dir antun kannst. Vor Allem dann, wenn Deine Navi links im Layout stehen sollte.