Martin1: colgroup in Verbindung mit colspan in IE7

Hallo zusammen,
ich habe eine Tabelle, in der keine einzige Zeile alle Spalten beinhaltet. Das heißt, in jeder Zeile gibt es mindestens ein colspan. Nun möchte ich dennoch vorab jeder Spalte eine Breite geben. Dafür sollte sich eigentlich colgroup eignen.

Dieser Ausschnitt funktioniert in FF3, die die Breite von A+B ist doppelt so groß wie die von C.

  
<table border="1">  
<colgroup>  
 <col width="200px"/>  
 <col width="200px"/>  
 <col width="200px"/>  
</colgroup>  
<tr>  
 <td colspan="2">A+B</td>  
 <td>C</td>  
</tr>  
</table>  

IE7 ignoriert die Breitenangaben, ehe nicht eine Zeile ohne colspans vorkommt. Dieses Beispiel funktioniert auch im IE7, ich habe aber eine unnütze Tabellenzeile:

  
<table border="1">  
<colgroup>  
 <col width="200px"/>  
 <col width="200px"/>  
 <col width="200px"/>  
</colgroup>  
<tr>  
 <td colspan="2">A+B</td>  
 <td>C</td>  
</tr>  
<tr>  
 <td>A</td>  
 <td>B</td>  
 <td>C</td>  
</tr>  
</table>  

Kann mir jemand sagen, ob ich irgendwo einen Denkfehler habe, oder ob ich IE irgendwie zu seinem Glück zwingen muss (wie)?

Viele Grüße
Martin

  1. Hallo,

    ich habe eine Tabelle, in der keine einzige Zeile alle Spalten beinhaltet. Das heißt, in jeder Zeile gibt es mindestens ein colspan. Nun möchte ich dennoch vorab jeder Spalte eine Breite geben. Dafür sollte sich eigentlich colgroup eignen.

    ja, die Browserunterstützung für Tabellenrendering ist eher mau. Das gilt für alle Browser. <colgroup> ist übrigens überflüssig.

    Dieser Ausschnitt funktioniert in FF3, die die Breite von A+B ist doppelt so groß wie die von C.

    Blöder Firefox!

    <table border="1">
    <colgroup>
    <col width="200px"/>
    <col width="200px"/>
    <col width="200px"/>
    </colgroup>
    <tr>
    <td colspan="2">A+B</td>
    <td>C</td>
    </tr>
    </table>

      
    
    > IE7 ignoriert die Breitenangaben, ehe nicht eine Zeile ohne colspans vorkommt.  
      
    Alle Browser sollten eine Breitenangabe, die völlig falschen Inhalt hat, ignorieren. px hat in einem HTML-Attribut nichts verloren.  
      
    Nach meinen Untersuchungen gibt es ziemlich genau eine Möglichkeit, die Browser zur gewünschten Darstellung zu bringen:  
      
    1\.) Verzichte auf veraltete HTML-Attribute.  
      
    2\.) Sorge dafür, dass die Browser die Seite im Standards-compliant-Modus  
        rendern.  
      
    3\.) Verwende table-layout: fixed;  
        Gib der Tabelle eine Breite, die maximal so groß ist wie die Summe der  
        Spaltenbreiten.  
        Gib den col-Elementen die von Dir gewünschte Breite.  
      
    Beispiel: <http://vinzenzmai.vi.funpic.de/tmp/pic/tafel-ie-fixed.png>  
      
      
    Freundliche Grüße  
      
    Vinzenz
    
    1. ja, die Browserunterstützung für Tabellenrendering ist eher mau. Das gilt für alle Browser. <colgroup> ist übrigens überflüssig.

      Ja, das war ein Versuch, die mangelnden Berechnungen im IE zu erzwingen, weil ich schonmal Probleme hatte, wenn in jeder Zeile ein colspan vorkam.

      Blöder Firefox!
      [...]
      Alle Browser sollten eine Breitenangabe, die völlig falschen Inhalt hat, ignorieren. px hat in einem HTML-Attribut nichts verloren.

      Entschuldige, das war da nur versuchsweise eingefügt und dann vorm Posten vergessen worden. Ohne "px" ist das Ergebnis das gleiche.

      1.) Verzichte auf veraltete HTML-Attribute.

      Auch die waren ein Versuch, die vorher erfolgte CSS-Formatierung zu ersetzen. Mit style="width:200px;" ist es das Gleiche in grün.

      2.) Sorge dafür, dass die Browser die Seite im Standards-compliant-Modus
          rendern.

      Das ist gegeben.

      3.) Verwende table-layout: fixed;
          Gib der Tabelle eine Breite, die maximal so groß ist wie die Summe der
          Spaltenbreiten.

      Hier lag wohl der Hase im Pfeffer. Was sich wie genau auswirkt, muss ich noch genau testen.

      Vielen Dank jedenfalls.
      Gruß Martin