Ausrichten von Layermenu bei relativem table- (bzw.div-) Layout
Thea
- design/layout
0 molily
Hallo Forum,
ich habe da mal ein Problem: http://www.8ung.at/thea/Schule_v4
Wenn ihr über die Buttons "Die Schule", "Projekte" und "Interaktiv" geht, öffnet sich ein Layermenu. Die Höhe stimmt auch. Ich weiß ebenfalls, wie man diese divs an die richtige Stelle rückt, das ist alles nicht das Problem. Das Problem ist, dass die Tabelle immer zentriert dargestellt wird. Die Positionierung der divs muss aber absolut erfolgen. Bei verschiednen Auflösungen gibt es da natürlich Probleme. Ich hab schon probiert, unterhalb der Navigationszeile eine weitere Zeile einzufügen, die die Höhe Null hat. Hat aber nicht das richtige Resultat gebracht.
Das einzige, was ich noch nicht evrsucht habe, ist, das table-Layout in divs umzuwandeln (was ich sowieso vorhabe) und dann ein div mit der Höhe Null zu definieren, das die Position der Layer-divs angibt. Ich weiß nur nicht, ob man über den z-index auch divs über ein div überlappen lassen kann, in dem die divs eingeschachtelt sind.
Hat jemand vielleicht eine Idee für eine elegante Lösung?
Gruß Thea
Hallo, Thea.
ich habe da mal ein Problem: http://www.8ung.at/thea/Schule_v4
Wenn ihr über die Buttons "Die Schule", "Projekte" und "Interaktiv" geht, öffnet sich ein Layermenu. Die Höhe stimmt auch. Ich weiß ebenfalls, wie man diese divs an die richtige Stelle rückt, das ist alles nicht das Problem. Das Problem ist, dass die Tabelle immer zentriert dargestellt wird. Die Positionierung der divs muss aber absolut erfolgen.
Das erreicht kann in der Regel damit erreicht werden, dass die Bereiche, welche relativ absolut zu positionieren sind, in ein Element mit position:relative eingeschlossen werden. Hier würde also naheliegen, die Tabellenzelle mit position:relative auszustatten. Selbiges habe ich ausprobiert und es hat nicht das gewünschte Ergebnis geliefert. Daraufhin bin ich auf folgende Lösung gekommen:
<td style="text-align:right;">
<div style="position:relative;">
<div id="box1" style="visibility:hidden; position:absolute; top:15px; right:248px; margin:0; padding:0;">
<img src="infos.gif" width="62" height="14" border="0" alt=""><br>
<img src="schulverein.gif" width="62" height="14" border="0" alt="">
</div>
<div id="box2" style="visibility:hidden; position:absolute; top:15px; right:158px; margin:0; padding:0;">
<img src="projekte.gif" width="90" height="14" border="0" alt="">
</div>
<div id="box3" style="visibility:hidden; position:absolute; top:15px; right:124px; margin:0; padding:0;">
<img src="gaestebuch.gif" width="62" height="14" border="0" alt=""><br>
<img src="forum.gif" width="62" height="14" border="0" alt="">
</div>
<a href="" onmouseover="document.getElementById('box1').style.visibility='visible'" onmouseout="document.getElementById('box1').style.visibility='hidden'"><img src="schule.jpg" width="62" height="14" border="0"></a><a href="" onmouseover="document.getElementById('box2').style.visibility='visible'" onmouseout="document.getElementById('box2').style.visibility='hidden'"><img src="schueler.jpg" width="62" height="14" border="0" style="vertical-align:middle"></a><a href="" onmouseover="document.getElementById('box3').style.visibility='visible'" onmouseout="document.getElementById('box3').style.visibility='hidden'"><img src="interaktiv.jpg" width="62" height="14" border="0"></a><img src="links.jpg" width="62" height="14" border="0" style="vertical-align:middle"><img src="kontakt.jpg" width="62" height="14" border="0">
</div>
</td>
Für den Test habe ich vorerst auf komplexe JavaScript-Funktionen verzichtet und über das DOM gearbeitet. Hier müsste natürlich noch die das zeitverzögerte Schließen etc. eingebaut werden.
Obige Lösung funktioniert erfolgreich in Opera 6.05 und MSIE 6SP1. Mozilla 1.2b vergrößert die Tabellenzelle um die Höhe der absolut positionierten Bereiche und sieht sie als Inhalt der Tabellenzelle an.
Das einzige, was ich noch nicht evrsucht habe, ist, das table-Layout in divs umzuwandeln (was ich sowieso vorhabe)
Das würde ich dir auch vorschlagen, auf diese Weise ist es am einfachsten, auch Mozilla zufriedenzustellen.
und dann ein div mit der Höhe Null zu definieren, das die Position der Layer-divs angibt.
Das wäre dann IMHO nicht mehr nötig.
Ich weiß nur nicht, ob man über den z-index auch divs über ein div überlappen lassen kann, in dem die divs eingeschachtelt sind.
Die Verschachtelung dürfte kein Problem machen, denn wenn die Navigation einen div-Container mit einem rechts floatenden Bereich enthält um das text-align:right ohne Tabellen zu lösen, werden die Untermenüs problemlos zu diesem div mit position:relative positioniert werden können.
Noch einige generelle Anmerkungen zur Seite.
Mathias