Michael Schröpl: Breite von Tabellenspalten

Hallo Leute,

ich bin gerade mal wieder dabei, etwas Altlasten zu
entsorgen, d. h. bestehende Dokumente nach XHTML 1.1
Strict zu überführen und dabei hauptsächlich Forma-
tierungen mit HTML durch Formatierungen mit CSS zu
ersetzen - oder was auch immer modernere HTML-Dialekte
mir so alles zur Verfügung stellt.

Als heutiges Anschauungsbeispiel gelte das Dokument
   http://www.schroepl.net/pbm/partien/aufstieg/_info/saison15/1_splan.htm

  • ein Dokument mit einem Haufen Tabellen drin.

Seit heute ist es immerhin schon XHTML 1.1 Strict - die
vorherige Version enthielt für _jede_ einzelne Zelle
eine explizite Breitenangabe in Prozent (das Dokument
wurde von einem Programm generiert, und dieses Programm
ist nunmehr 15 Jahre alt und läuft nur unter DOS ... da
ändere ich nur mit _ganz_ spitzen Fingern etwas dran).

Im Wesentlichen habe ich mit der Verwendung von
<colgroup> das Erscheinungsbild der entsprechenden
Tabellen schon recht ordentlich in den Griff bekommen.

Nur enthält dieses Dokument immer noch 11 Tabellen
(eigentlich ja 22, aber jeweils zwei nebeneinander ...
auch nicht wirklich das, was mir so richtig gefällt).

Und alle diese 11 Tabellen sind identisch formatiert -
ich kann aber nicht einfach eine einzige Tabelle daraus
machen, weil das Dokument auf Papier ausgedruckt werden
muß und dazu einen definierten Seitenumbruchpunkt
zwischen zwei (beliebigen) Tabellen haben muß.

Ich besitze zudem zwölf struktur-identische Dokumente
dieser Art. Und jedes Jahr werden weitere drei dazu
kommen (dieses Jahr ist das nächstes Wochenende der
Fall).
Das klingt noch nicht nach viel Arbeit - aber das Pro-
gramm benutzen noch ein paar Dutzend andere Leute.
Also möchte ich gerne eine wirklich gute Lösung haben.

Das alles schreit irgendwie danach, diese ganzen
Tabellenzellen irgendwie mit CSS zu formatieren - den
größten Teil der Formatierung mache ich auch schon mit
CSS, nur an die Definition der Zellenbreiten komme ich
nicht so recht heran. In demjenigen Teil von CSS, der
in SelfHTML 8.0 beschrieben wird, habe ich nicht das
gefunden, was mir weiterhelfen würde.

Ich erinnere mich allerdings an Forum-Postings darüber,
daß mit moderneren CSS-Varianten Dinge wie "Formatie-
rung der 2. Zelle einer Tabellenzeile" möglich sein
sollen - so etwas Ähnliches würde mir wahrscheinlich
die Verwendung von <colgroup> (das eben leider immer
nur für _eine_ Tabelle gilt) ersparen.

Meine Fragen lauten also konkret:

  • Gibt es eine Möglichkeit, das bisher durch HTML
      beschriebene Layout dieser Tabellen ausschließlich
      mit CSS aus einer externen Style-Daten zu beschreiben?
  • Hat jemand weitere Vorschläge, wie ich diese Tabellen
      eleganter in HTML/CSS aufbauen könnte?

Um die Sache etwas zu erschweren, kommen noch zwei
Rangbedingungen hinzu:
a) Einige Parameter dieser Tabellenstruktur sind mir
   nicht zwingend bekannt, weil sie aus den Daten des
   genannten Programms abgeleitet werden. Es müssen
   beispielsweise nicht genau 22 Spieltage sein, da
   sind auch andere Werte möglich (allerdings sind
   ungeradzahlige Angaben kaum sinnvoll)
   Die Gruppierung zu je zwei Spieltagen hat übrigens
   auch spieltechnische Gründe und nicht nur optische.
b) Ich muß dieses Dokument mit einem M$IE drucken
   können. Zu meinem Leidwesen ist der M$IE der ein-
   zige Browser, der praktisch alle meine Dokumente
   sowohl korrekt drucken als auch entsprechend in
   der Druckvoransicht darstellen kann: Opera ist
   bezüglich CSS eine absolute Katastrophe (verrech-
   net sich bei der Breite von <span>-formatierten
   Satzinhalten total), während ich bei Mozilla nicht
   auf dem aktuellen Stand bin, aber mit einem halben
   Dutzend 0.9.x-Versionen nur schlechte Erfahrungen
   gemacht habe. Und Print-Preview ist essentiell,
   weil ich diese Dokumente in eine Datei drucke und
   per Mail an den Herausgeber sende, also selbst gar
   nicht weiß, wie das Ergebnis wirklich auf Papier
   aussieht (ich besitze selbst gar keinen Drucker
   mehr, und schon gar nicht den des Herausgebers ...),
   aber selbst für den Seitenumbruch etc. verantwort-
   lich bin).
   Dieses Dokument wird zusammen mit ca. 20 anderen
   Dokumenten veröffentlicht, und die Druckvorlage muß
   natürlich einheitlich aussehen.
   Eine Lösung für M$IE 5.5 wäre mir am liebsten; zur
   Not darf auch ein M$IE 6.0 erforderlich sein - oder
   der Nachweis einer Mozilla-Version, die wirklich
   fehlerfrei CSS-formatierte Dokumente drucken kann.

In gespannter Erwartung auf Anregungen aller Art
   Michael

  1. Hallo Michael,
    ich hab mir die Seite gerade mal mit dem IE5.5 angeschaut, und mir ist aufgefallen, daß die letzten 3 Doppel-Tabellen nicht genau in der Mitte der Seite zusammenstoßen, (so wie alle anderen Doppel-Tabellen), konnte aber nicht auf Anhieb einen Grund dafür finden.
    Zu deinem Problem: Ich bin nicht so der XHTML-1.1-Strict-Experte,
    aber wenn es möglich ist, würde ich zwei Unter-Klassen class="td1" und class="td2" für die zwei verschieden breiten td's verwenden und die Breite jeweils im CSS definieren und dafür die Breitenangabe im colgroup rauslassen.
    MfG. Lutz T.

  2. Hi Michael,

    http://www.schroepl.net/pbm/partien/aufstieg/_info/saison15/1_splan.htm

    Das alles schreit irgendwie danach, diese ganzen
    Tabellenzellen irgendwie mit CSS zu formatieren - den
    größten Teil der Formatierung mache ich auch schon mit
    CSS, nur an die Definition der Zellenbreiten komme ich
    nicht so recht heran.

    Ich weiß leider nicht ganz, was du hiermit meinst. Sprichst du von td {width: n%;} und http://www.w3.org/TR/REC-CSS2/tables.html#width-layout?

    Ich erinnere mich allerdings an Forum-Postings darüber,
    daß mit moderneren CSS-Varianten Dinge wie "Formatie-
    rung der 2. Zelle einer Tabellenzeile" möglich sein
    sollen - so etwas Ähnliches würde mir wahrscheinlich
    die Verwendung von <colgroup> (das eben leider immer
    nur für _eine_ Tabelle gilt) ersparen.

    http://www.w3.org/TR/css3-selectors/#nth-child-pseudo ff. ist zwar eine Möglichkeit, aufgrund der mangelnden Unterstützung durch die Browser im Moment jedoch nicht wirklich praktikabel. Besser, du arbeitest hier mit Klassen.

    • Gibt es eine Möglichkeit, das bisher durch HTML
        beschriebene Layout dieser Tabellen ausschließlich
        mit CSS aus einer externen Style-Daten zu beschreiben?

    Du regelst ohnehin kaum etwas direkt im HTML-Teil, was genau willst du denn noch auslagern?

    • Hat jemand weitere Vorschläge, wie ich diese Tabellen
        eleganter in HTML/CSS aufbauen könnte?

    Wenn du CSS _anstatt_ Tabellen verwenden willst, so ist das zwar nicht unmöglich, in diesem Fall aber wohl unsinnig. Tabellarische Daten gehören in Tabellen. Wenn du in allen Tabellen gleiche Spaltenbreiten haben willst, kannst du mit Klassen arbeiten, um die Breite gleichmäßig aufzuteilen.

    b) Ich muß dieses Dokument mit einem [Browser] drucken können.

    Tja, die Tabelle ist zu breit. Warum druckst du nicht einfach im Querformat (http://selfhtml.teamone.de/css/eigenschaften/printlayouts.htm#size)? @page{size:landscape;} und das Problem ist erledigt, der Ausdruck sieht dann IMHO auch wesentlich besser aus, weil die Zellenhöhe sich nicht verändert.

    LG Orlando

    --
    SELF-TREFFEN 2002
    http://www.rtbg.de/selftreffen/
    http://www.megpalffy.org/temp/penneninhh.html

    1. Hi Orlando,

      Ich erinnere mich allerdings an Forum-Postings darüber,
      daß mit moderneren CSS-Varianten Dinge wie "Formatie-
      rung der 2. Zelle einer Tabellenzeile" möglich sein
      sollen - so etwas Ähnliches würde mir wahrscheinlich
      die Verwendung von <colgroup> (das eben leider immer
      nur für _eine_ Tabelle gilt) ersparen.

      < http://www.w3.org/TR/css3-selectors/#nth-
      child-pseudo> ff. ist zwar eine Möglichkeit,
      aufgrund der mangelnden Unterstützung durch die
      Browser im Moment jedoch nicht wirklich praktikabel.

      Das war es, was ich hören wollte.

      Besser, du arbeitest hier mit Klassen.

      Das möchte ich nicht - das wäre ja schlimmer als die
      <colgroup>-Methode, wenn ich jedem einzelnen <td>
      wieder eine Klasse zuweisen müßte.

      Du regelst ohnehin kaum etwas direkt im HTML-Teil,
      was genau willst du denn noch auslagern?

      Die <colgroup> durch CSS3 ersetzen ...

      b) Ich muß dieses Dokument mit einem [Browser]
      drucken können.
      Tja, die Tabelle ist zu breit.

      Die konkreten CSS-Einstellungen (margin etc.) sind
      keineswegs fix - die kann ich für das Drucken ggf.
      mal kurz anpassen.

      Warum druckst du nicht einfach im Querformat
      (http://selfhtml.teamone.de/css/eigenschaften/printlayouts.htm#size)?

      Weil das dann mit dem Rest des Buches nicht vereinbar
      ist (und weil so ein Dokument per Definition auf zwei
      benachbarte Druckseiten gehört, was ich im Querdruck
      nicht mehr schaffe, dann würden es drei Seiten).

      @page{size:landscape;} und das Problem ist erledigt,
      der Ausdruck sieht dann IMHO auch wesentlich besser
      aus, weil die Zellenhöhe sich nicht verändert.

      Die Zeilenhöhe soll sich ohnehin nicht ändern ...
      falls der M$IE da mal wieder den CSS-unterdrückten
      Umbruch nicht kapiert, werde ich nacharbeiten müssen.

      Danke für die Infos
            Michael

      1. Hi Michael,

        Besser, du arbeitest hier mit Klassen.

        Das möchte ich nicht - das wäre ja schlimmer als die
        <colgroup>-Methode, wenn ich jedem einzelnen <td>
        wieder eine Klasse zuweisen müßte.

        Gut, wenn du das nicht willst, wird dir http://selfhtml.teamone.de/css/eigenschaften/anzeige/display2.htm auch nicht sonderlich gefallen... Ich finde die aktuelle Lösung übrigens in keiner Weise schlecht.

        Du regelst ohnehin kaum etwas direkt im HTML-Teil,
        was genau willst du denn noch auslagern?

        Die <colgroup> durch CSS3 ersetzen ...

        Mit http://selfhtml.teamone.de/css/eigenschaften/positionierung.htm#display lässt sich eine Tabelle rein in CSS nachbilden, was zwar ein zentrales Layout möglich macht, doch den Code etwas aufbläht. Aber das komprimierst du schon :)

        b) Ich muß dieses Dokument mit einem [Browser]
        drucken können.

        Die konkreten CSS-Einstellungen (margin etc.) sind
        keineswegs fix - die kann ich für das Drucken ggf.
        mal kurz anpassen.

        Gut, du kannst natürlich Schriftgrad/Außen-/Innenabstand herabsetzen.

        Frohes Schaffen & LG
        Orlando

        --
        SELF-TREFFEN 2002
        http://www.rtbg.de/selftreffen/
        http://www.megpalffy.org/temp/penneninhh.html