tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
Like Tree1Danke
ERLEDIGT
JA
ANTWORTEN
21
ZUGRIFFE
644
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DarkfrOnt DarkfrOnt ist offline Mitglied
    Registriert seit
    May 2005
    Beiträge
    21
    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
     

  2. #2
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    1. Welchen Doctype hast du für das Dokument angegeben?
      (Stichwort: Der »DOCTYPE-Switch« und seine Auswirkungen)

    2. 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
     

  3. #3
    DarkfrOnt DarkfrOnt ist offline Mitglied
    Registriert seit
    May 2005
    Beiträge
    21
    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">
     

  4. #4
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    ... und wie sieht's hiermit aus?

    Zitat Zitat von spicelab Beitrag anzeigen
    1. erledigt

    2. In welchem Browser- und Dokumentmodus befindet sich IE9 jeweils?
      (Kontrolle über "F12" -> Entwicklertools)
    Ich frag' dich das alles, weil ich momentan keinen Zugriff auf IE9 besitze, um deinen Code zu prüfen.
    Geändert von spicelab (17.08.11 um 20:20 Uhr)
     

  5. #5
    DarkfrOnt DarkfrOnt ist offline Mitglied
    Registriert seit
    May 2005
    Beiträge
    21
    Sorry, ganz überlesen.

    Browser Mode: IE9
    Doucument Mode: IE9 standards
     

  6. #6
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    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
     

  7. #7
    DarkfrOnt DarkfrOnt ist offline Mitglied
    Registriert seit
    May 2005
    Beiträge
    21
    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)
     

  8. #8
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    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
     

  9. #9
    DarkfrOnt DarkfrOnt ist offline Mitglied
    Registriert seit
    May 2005
    Beiträge
    21
    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)
     

  10. #10
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Zitat Zitat von DarkfrOnt Beitrag anzeigen
    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.
    Kann ich mit meinem aktuell gezeigten XHTML- u. CSS-Code nicht reproduzieren.

    Lediglich die Regelerweiterung display:block für das <a>-Element ist hier noch zusätzlich für zweizeilige Linkbeschreibungen dienlich, was ihre (korrekte) vertikale Zentrierung betrifft.
    Geändert von spicelab (18.08.11 um 08:40 Uhr) Grund: Tipp-Ex
     

  11. #11
    DarkfrOnt DarkfrOnt ist offline Mitglied
    Registriert seit
    May 2005
    Beiträge
    21
    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;
    }
     

  12. #12
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    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;
    }
     

  13. #13
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    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)
     

  14. #14
    DarkfrOnt DarkfrOnt ist offline Mitglied
    Registriert seit
    May 2005
    Beiträge
    21
    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.
     

  15. #15
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    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.

    IE9 Problem mit float + vertical-align in table-ie9.png

    Wenn stattdessen nun 50px erwünscht sind, weißt du, in welcher Zeile ich die Elementhöhe angegeben habe.
     

Ähnliche Themen

  1. vertical-align und der IE
    Von Gunah im Forum CSS
    Antworten: 2
    Letzter Beitrag: 23.09.08, 12:58
  2. IE und vertical-align
    Von goldzahn im Forum CSS
    Antworten: 9
    Letzter Beitrag: 05.05.07, 23:21
  3. Vertical-Align im DIV?
    Von josDesign im Forum CSS
    Antworten: 2
    Letzter Beitrag: 23.11.06, 08:31
  4. vertical-align im Firefox Problem
    Von metty im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 02.02.05, 17:08
  5. div & vertical-align
    Von Pherseus im Forum CSS
    Antworten: 3
    Letzter Beitrag: 27.01.05, 17:28