-
Hallo,
das Problem ist folgendes: Ich habe eine Tabelle die die Eigenschaft float=left besitzt, die Texte in der table sollen mittig ausgerichtet werden in vertikaler Richtung, wobei float allerdings den vertical-algin verhindert? Gibt es ein Workaround?
Ist wieder mal nur ein Bugfix für den IE, in allen anderen Browsern ist zwischen den tables kein Zwischenraum, mit float=left hatte ich diesen im IE entfernt.
Hier ein Codeausschnitt:
Code :1 2 3 4 5
<table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr ><td><a href="#" class="mainlevel" >CE</a></td></tr> <tr ><td><a href="#" class="mainlevel" >Berechnung</a></td></tr> <tr ><td><a href="#" class="mainlevel" >Erstellung</a></td></tr> </table>
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#menu-content td { vertical-align: middle; height: 32px; background: url(../images/menu-back.PNG) repeat-x; } #menu-content td:hover, #menu-content td:active { background: url(../images/menu-hover.PNG) repeat-x; } #menu-content td a { float: left; clear: left; /*position: relative; top: 50%;*/ background: none; } #menu-content .mainlevel { background: none; } #menu-content a:hover, #menu-content a:active, #active_menu { background: none; }
Wenn ich /*position: relative; top: 50%;*/ einkommentiere ist es schon fast mittig. Problem dabei ist, wenn die a-tags über 2 Zeilen gehen, es nicht mehr ganz in der Mitte ist. Den hover habe ich in der normalen css auch in den a-tags untergebracht, hier in den td's, damit diese nicht mit verschoben werden im IE9.
Ohne float wird alles super zertriert, nur dann haben die Zellen der Tabelle ein margin-bottom von ein paar Pixel.
Vielen Dank für eure Hilfe!
Grüße,
ska3k
-
- Welchen Doctype hast du für das Dokument angegeben?
(Stichwort: Der »DOCTYPE-Switch« und seine Auswirkungen)
- In welchem Browser- und Dokumentmodus befindet sich IE9 jeweils?
(Kontrolle über "F12" -> Entwicklertools)
Geändert von spicelab (17.08.11 um 19:56 Uhr) Grund: Tipp-Ex
- Welchen Doctype hast du für das Dokument angegeben?
-
1. Im Joomla-Quelltext steht:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2. Bei F12 im IE9 steht:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
Sorry, ganz überlesen.
Browser Mode: IE9
Doucument Mode: IE9 standards
-
Mein Alternativvorschlag, um hier ohne float:left auszukommen, und außerdem das Navigationsmenü im Markup zu einem praxisüblichen und sogenannten "Listenmenü" auszuzeichnen:
Code xhtml:1 2 3 4 5 6
<div id="menu-content"> <ul> <li><a ...>einzeiliger Link</a></li> <li><a ...>zweizeiliger<br />Link</a></li> </ul> </div>
Code css:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#menu-content ul { margin:0; padding:0; list-style:none; display:table; width:100%; } #menu-content ul li { display:table-cell; vertical-align:middle; height:32px; background:url(../images/menu-back.PNG) repeat-x; } #menu-content li:hover, #menu-content li:active { background:url(../images/menu-hover.PNG) repeat-x; }
Geändert von spicelab (17.08.11 um 22:28 Uhr) Grund: Tipp-Ex
-
Habs jetzt auf ul-li umgestellt, ist auf jeden Fall besser. Aber ich bekomme ich das noch hin, dass eine Zeile 1024px breit ist und die ganzen Menüeinträge untereinander stehen? Alles was ich gerade versucht hatte ging schief.
Zur Zeit sind alle 9 Einträge nebeneinander, jede Zelle mit gleicher Breite, wie bei inline.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#menu-content ul { margin:0; padding:0; list-style:none; display:table; width:100%; } #menu-content ul li { display:table-cell; vertical-align:middle; width:1024px; height:32px; background:url(../images/menu-back.PNG) repeat-x; } #menu-content li:hover, #menu-content li:active,#menu-content #current { background:url(../images/menu-hover.PNG) repeat-x; }Geändert von DarkfrOnt (17.08.11 um 23:43 Uhr)
-
Sorry für meinen Fehler, dass die <li>-Elemente ("Tabellenzellen") nebeneinander, und nicht untereinander erscheinen.
Code xhtml:1 2 3 4 5 6 7 8 9 10 11 12 13 14
<div id="menu-content"> <ul> <li> <ul> <li><a ...>einzeiliger Link</a></li> </ul> </li> <li> <ul> <li><a ...>zweizeiliger<br />Link</a></li> </ul> </li> </ul> </div>
Code css:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#menu-content ul { margin:0; padding:0; list-style:none; display:table; width:100%; /* oder 1024px */ } #menu-content ul li { display:table-row; } #menu-content ul li ul li { display:table-cell; vertical-align:middle; height:32px; background:url(../images/menu-back.PNG) repeat-x; } #menu-content ul li ul li:hover, #menu-content ul li ul li:active { background:url(../images/menu-hover.PNG) repeat-x; }
Geändert von spicelab (18.08.11 um 06:19 Uhr) Grund: Tipp-Ex
-
Ok, jetzt passt das. Jetzt wird die Breite und Höhe (1024x32) einer Menuzelle noch missachtet und der Hintergund wird auch nur genau da dargestellt, wo Text ist.
Geändert von DarkfrOnt (18.08.11 um 08:22 Uhr)
-
Geändert von spicelab (18.08.11 um 08:40 Uhr) Grund: Tipp-Ex
-
Display block hat schon geholfen
Ich habs jetzt so realisiert, so passt schonmal alles außer der Text in den Zellen wird wieder nicht zentriert und im IE9 wird der hover nicht dargestellt, warum?
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
#menu-content ul { margin:0; padding:0; list-style:none; display:table; width:100%; /* oder 1024px */ } #menu-content ul li { display:table-row; vertical-align:middle; background:url(../images/menu-back.PNG) repeat-x; } #menu-content ul li ul li { display:table-cell; vertical-align:middle; } #menu-content ul li ul li:hover, #menu-content ul li ul li:active, #menu-content a:active, #menu-content a:hover, #current { background:url(../images/menu-hover.PNG) repeat-x; } #menu-content a { display:block; width:1024px; height:50px; }
-
Vergleich an dieser Stelle nochmal meine funktionstüchtige Vorgabe mit deinem CSS.
Code css:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#menu-content ul li { display:table-row; } #menu-content ul li ul li { display:table-cell; vertical-align:middle; height:32px; background:url(../images/menu-back.PNG) repeat-x; } #menu-content ul li ul li:hover, #menu-content ul li ul li:active { background:url(../images/menu-hover.PNG) repeat-x; }
-
Desweiteren hab ich in meinem CSS für das <a>-Element neben display:block keine width- u. height-Regel aufgestellt.
Letztere vermasselt dir (browserübergreifend!) alles in Bezug auf Zeilenhöhe und vertikale Zentrierung des Elementinhaltes. Und warum 50px, wenn die Zellenhöhe 32px betragen soll?Geändert von spicelab (18.08.11 um 09:08 Uhr)
-
Ich hab festgestellt, dass eine Zeile doch 50px hoch sein muss, deswegen hatte ich das angepasst. Das ist ein width und height in a nehmen soll leutet mir jetzt auch ein.
Hier mein verbesserter Code:
Code css:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#menu-content ul li { display:table-row; height:50px; background:url(../images/menu-back.PNG) repeat-x; } #menu-content ul li ul li { display:table-cell; vertical-align:middle; height:100%; } #menu-content #menu-content ul li ul li :hover, #current { background:url(../images/menu-hover.PNG) repeat-x !important; } #menu-content a { display:block; }
Die height habe ich von "ul li ul li " zu "ul li" verschoben, sonst hatte es keinen Effekt, beim background das gleiche. Trotzdem besteht das Problem, dass er sich anscheinend an der Höhe des a-Tags orientiert und somit den hover auch nur so hoch wie den Text darstellt. Das mit dem vertical-algin haut auch noch nicht hin. Ich bin selbst auch verwirrt das dies nicht geht, weil das ganze css logisch klingt.
-
Solange du deine bisherigen CSS-Codes nicht komplett verwirfst, und sie einfach durch mein fehlerfreies CSS 1:1 ersetzt, ist es ehrlich gesagt recht müßig, hier darüber weiter zu diskutieren.
Zur Beweislage anbei der IE9-Schnappschuß mit meiner Stylesheetfassung.

Wenn stattdessen nun 50px erwünscht sind, weißt du, in welcher Zeile ich die Elementhöhe angegeben habe.
Ähnliche Themen
-
vertical-align und der IE
Von Gunah im Forum CSSAntworten: 2Letzter Beitrag: 23.09.08, 12:58 -
IE und vertical-align
Von goldzahn im Forum CSSAntworten: 9Letzter Beitrag: 05.05.07, 23:21 -
Vertical-Align im DIV?
Von josDesign im Forum CSSAntworten: 2Letzter Beitrag: 23.11.06, 08:31 -
vertical-align im Firefox Problem
Von metty im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 02.02.05, 17:08 -
div & vertical-align
Von Pherseus im Forum CSSAntworten: 3Letzter Beitrag: 27.01.05, 17:28



1Danke

Zitieren

Login





