Anfänger: Tabellen Breite zuweisen!

Hallo,

ich hab vier Tabellenzellen. Oben links, unten links, oben rechts, unten rechts. Oben links und unten rechts ist sehr viel Inhalt, so dass sie viel Platz verbrauchen. Daher nimmt die Zelle oben links automatisch viel Breite an und quetscht die obere rechte zusammen (soll auch so sein). Nun möchte ich das in der zweiten Zeile aber genau andersrum, was nicht passiert da die Zelle unten rechts die Breite der Zelle dadrüber (der kleinen annimmt). Wie kann ich das ändern? Ich hab schon feste pixelangaben wie width:500px; oder width:100%; ausprobiert, aber dann wird das auch für die Zeile drüber benutzt, obwohl ich es explizit für die Zelle unten rechts angegeben habe.

Danke!

  1. Hallo,

    Soweit ich Dich verstehe, möchtest Du sowas:

    | AAA  |  BBBBBBBBBBBBBBBBBBBBB |
    | CCCCCCCCCCCCCCCCCCCCCCC | DDD |

    AFAIK geht das nicht mit dem gängigen Tabellenmodell von HTML/CSS und nur 2 Spalten. In HTML sind alle Zellen in einer Spalte immer gleich breit. (Anders als in einer Textverarbeitung wie OpenOffice oder Word).

    Ich vermute, dass es sich sowieso nicht um tabellarische Daten handelt, also lass die Tabellen gleich weg und mach ein CSS-Layout.

    Wenn Du unbedingt mit Tabellen rumbasteln willst, könntest Du noch einen Versuch mit 3 oder 4 Spalten und verbundenen Zellen (colspan) machen, z.B. so:

    <table>
      <tr>
         <td>AAA</a>
         <td colspan="2">BBBBBBB</td>
      </tr>
      <tr>
         <td colspan="2">CCCCCCC</td>
         <td>DDD</td>
      </tr>
    </table>

    (Aus dem hohlen Bauch hier eingetippt, ungetestet.)

    mfg Thomas

    1. @@Thomas Luethi:

      nuqneH

      In HTML sind alle Zellen in einer Spalte immer gleich breit.

      Nicht nur in HTML. Das sollte nicht nur auf Tabellen in HTML-Dokumenten, sondern auf alle Tabellen zutreffen.

      Ich vermute, dass es sich sowieso nicht um tabellarische Daten handelt

      Bingo.

      also lass die Tabellen gleich weg und mach ein CSS-Layout.

      Ja.

      Wenn Du unbedingt mit Tabellen rumbasteln willst, könntest Du noch einen Versuch mit 3 oder 4 Spalten und verbundenen Zellen (colspan) machen

      Nein.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Hallo Gunnar,

        In HTML sind alle Zellen in einer Spalte immer gleich breit.
        Nicht nur in HTML. Das sollte nicht nur auf Tabellen in HTML-Dokumenten, sondern auf alle Tabellen zutreffen.

        Das ist Ansichtssache, und ich bin eigentlich auch Deiner Ansicht. ;-)

        IIRC ist es aber z.B. in MS Word möglich, die Zellenbreite in jeder Zeile separat zu ändern.

        In OpenOffice Writer 3.2.0 ist das grundsätzlich nicht möglich. Es sei denn, man macht zuerst zwei unabhängige Tabellen und löscht dann den Abstand bzw. die Leerzeile dazwischen, sodass die Tabellen nun "aneinander kleben" und der untere Rahmen der 1. Tabelle und der obere Rahmen der 2. Tabelle miteinander verschmelzen.

        Wenn Du unbedingt mit Tabellen rumbasteln willst, könntest Du noch einen Versuch mit 3 oder 4 Spalten und verbundenen Zellen (colspan) machen
        Nein.

        Doch! ;-)
        Weil es mich wundernahm, was mit Tabellen möglich ist, habe ich jetzt selbst noch etwas rumgebastelt: Testseite.

        Grundsätzlich ging ich von einer Tabelle aus, die eigentlich 3 Spalten à 200 Pixel hätte.

        ¦  200px  ¦  200px  ¦  200px  ¦

        In der ersten Zeile dehnt sich die zweite Zelle über zwei Spalten aus, und in der zweiten Zeile die erste Zelle.
        Somit wäre folgende Darstellung erwünscht:

        +---------+-------------------+
        | A 200px |    BBB 400px      |
        +---------+-------------------+
        |    CCC 400px      | D 200px |
        +---------+-------------------+

        Das Beispiel 1 (so wie in meinem Posting vom 21.4., 18:04 eingetippt) "funktioniert" nicht wie gewünscht, d.h. alle vier Zellen werden 400px breit angezeigt, und zwar im MS IE 8, in Firefox 3.6 und in Opera 10. Ebenfalls "falsch" ist die Darstellung in Safari 4.0; hier sind die breiten Zellen 600px breit, die schmalen 200px.

        Abhilfe schaffen könnte man mit folgenden Methoden:

        A) Ergänzen von Beispiel 1, indem man explizit die grundsätzliche Spaltenbreite von 200px definiert, und zwar mit einem COLGROUP-Bereich.  (Siehe <http://de.selfhtml.org/html/tabellen/aufbau.htm#vordefinieren@title=SelfHTML: Spalten vordefinieren>)
        Funktioniert in MS IE 8.0, Firefox 3.6 und Safari 4.0.
        Funktioniert NICHT in MS IE 5.5, 6.0 und 7.0.
        Beispiele 3, 4 und 5

        Fürs Archiv also noch der ergänzte Code (entspricht Beispiel 5 auf der Testseite):

        <table>  
          <colgroup>  
            <col style="width:200px;">  
            <col style="width:200px;">  
            <col style="width:200px;">  
          </colgroup>  
          <tr>  
            <td style="width:200px;">AAA 200px</td>  
            <td style="width:400px;" colspan="2">BBBBBBB 400px</td>  
          </tr>  
          <tr>  
            <td style="width:400px;" colspan="2">CCCCCCC 400px</td>  
            <td style="width:200px;">DDD 200px</td>  
          </tr>  
        </table>
        

        B) Mit einer zusätzlichen Zeile, die wirklich 3 Zellen enthält, aber an sich überflüssig ist und deshalb so weit wie möglich mit CSS "unsichtbar" gemacht wird. (Aber nicht display:none; sonst ist der "Hack-Effekt" dahin.)
        Funktioniert in MS IE 5.5 bis 8.0, Firefox 3.6, Opera 10, Safari 4.0.
        Beispiele 2a), 2b), 2c)

        C) Mit zwei Tabellen, die miteinander verschmelzen.
        Für die 1. Tabelle: table.tab1 { margin-bottom:0; }
        Für die 2. Tabelle: table.tab2 { margin-top:-1; }
        Funktioniert in MS IE 5.5 bis 8.0, Firefox 3.6, Opera 10, Safari 4.0
        Beispiel 6

        Das alles sind wie gesagt nur Spielereien aus Neugier.
        Und wir sind uns ja einig, dass Sebastian sein Problem nicht mit Tabellen, sondern mit CSS lösen sollte.

        Freundliche Grüsse
        Thomas