Guido: Tabellenbreite erzwingen

Hi,

ich habe folgendes Problem:

Ich möchte eine Tabelle in der Form haben:

<table border="1">
<tr>
 <td rowspan="2" width="160" height="180">Zelle 1</td>
 <td colspan="2" height="60">Zelle 2</td>
</tr>
<tr>
 <td colspan="2" height="130">Zelle 3</td>
</tr>
<tr>
 <td rowspan="2" height="230">Zelle 4</td>
 <td colspan="2" height="190">Zelle 5</td>
</tr>
<tr>
 <td height="40">Zelle 6</td>
 <td>Zelle 7</td>
</tr>
</table>

Die Zellen 1 und 4 sollen also in der Breite und Höhe festgelegt sein. Die Zellen 2,3 und 5 allerdings sollen sich auf die gesamte restliche Breite des Browserfensters ausdehnen. Die Zellen 6 und 7 sollen sich den Platz der sich aus den Zellen 2,3 und 5 ergibt teilen.
Wenn ich nun aber die erste Zeile wie folgt ändere:

<table border="1" width="100%">

dann klappt das mit Netscape 6 und dem IE wie geschmiert, nur Netscape 4.75 macht mir mal wieder einen Strich durch die Rechnung, denn sobald ich eine breitenangabe einer zelle mache wenn ich schon die breite der gesamten tabelle festgelegt habe spielen die breiten verrückt. Wie kann ich das Problem lösen?

(evtl. sollen sich die zellen 6 und 7 die breite die sich aus 2,3 und 5 ergibt auch nicht 50 zu 50 sonder 40 zu 60 teilen)

Vielen dank, bis dann - Guido

  1. N'Abend,

    wenn nichts anderes hilft:

    <table border="1" width="100%">
    <tr>
     <td rowspan="2" width="160" height="180"><img src="leer.gif" width=160>Zelle 1</td>
     <td colspan="2" width="99%" height="50">Zelle 2</td>
    </tr>
    <tr>
     <td colspan="2" height="130">Zelle 3</td>
    </tr>
    <tr>
     <td rowspan="2" height="230">Zelle 4</td>
     <td colspan="2" height="190">Zelle 5</td>
    </tr>
    <tr>
     <td height="40">Zelle 6</td>
     <td>Zelle 7</td>
    </tr>
    </table>

    Also: Der zweiten und dritten Spalte gibst du in Zelle 2 eine Breite von 99%. Damit dann nicht die erste Spalte vollends zusammengequetscht wird, setzt du in Zelle 1 oder 4 eine 1-Pixel-Grafik mit der Breite 160 rein.

    Dann geht's.
      soenk.e

    PS: 60+130 ist 190, nicht 180 (Zelle 1!).

  2. Hi,
    ich habe folgendes Problem:

    Ich möchte eine Tabelle in der Form haben:

    Aus meiner Erfahrung mit Tabellen kann ich folgendes sagen:

    1. Höhenangaben vergiß gleich mal wieder, das funktioniert nicht[1].
    2. Die Breite gemischt in Prozent und Pixeln anzugeben ist ebenfalls nicht ratsam. Wenn du pixelgenaue Breiten haben willst, mußt du
      a) alle Angaben pixelgenau machen (und dich dabei nicht verrechnen)
      b) JEDE Spalte pixelgenau definieren. Das leitet direkt über zu
    3. Breitenangaben werden nur in der ersten TR-Zeile interpretiert.

    Du hast das Problem, daß deine erste Tabellenzeile mit colspan zwei Spalten überspannt. Deshalb kannst du den Spalten nicht einzeln eine Breite zuweisen.

    Einzige Lösungsmöglichkeit: Du baust vor dieser Zeile eine weitere ein, in der du alle drei Zellen in der Breite einzeln definierst:

    <table width="760">
      <tr>
        <td width="160"><img src="1x1.gif"></td>
        <td width="300"><img src="1x1.gif"></td>
        <td width="300"><img src="1x1.gif"></td>
      </tr>
    ....
    </table>
    (Das 1x1.gif ist eine transparente 1x1-Pixel große Grafik.)

    Andernfalls werden sich die Spalten, die oben mit colspan nicht weiter definiert sind, gleichmäßig breit anordnen.

    Alternativ kannst du versuchen, Tabellen ineinander zu verschachteln. Außen ist die relative Tabelle (mit Prozent), und in einigen Zellen die Tabelle, die pixelgenau breit sein soll. Der Browser schafft automatisch genug Platz für solch eine Tabelle (mindestens dann, wenn du eine Grafik entsprechender Breite einbaust).

    - Sven Rautenberg