Breite von Tabellenspalten
Michael Schröpl
- css
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
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:
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
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.
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
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
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