Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CSS: Eigenschaften von Tabellenspalten

5 views
Skip to first unread message

Helmut Richter

unread,
Mar 18, 2013, 7:37:27 AM3/18/13
to
Gehe ich recht in der Annahme, dass alle style-Eigenschaften von
Tabellenspalten (also von <col>-Elementen) wie Rahmen, Farbe, Textausrichtung
vᅵllig wirkungslos fᅵr die Tabellenelemente sind, weil die keine Kinder der
Spalten sind und daher nichts erben? Dass aber die Spaltenbreite trotzdem an
die Nicht-Kinder vererbt wird? Falls ich damit richtig liege, wo hᅵtte das
gestanden?

Konkreter Anwendungsfall: Ich mᅵchte Spaltengruppen voneinander
abgrenzen. Bisherige Lᅵsung: eine Klasse "separate" fᅵr jedes einzelne
Tabellenelement dieser Spalte, bei der ein linker Rahmen (border-left)
dazugemalt wird. Sehr hᅵsslich aus zwei Grᅵnden:

Erstens kann das einzelne Tabellenelement nichts dafᅵr; dieser Rahmen ist
Eigenschaft der Semantik der Spalte (oder noch besser: einer colgroup) und
nicht des einzelnen Elements.

Zweitens fᅵhrt es (wenigstens bei mir) dazu, dass es CSS-Anweisungen mit sehr
ungleichmᅵᅵig vielen Selektoren gibt, von denen dann die falschen gewinnen:

th + td, th:empty + th, td.separate, th.separate {
border-left-style: solid;
border-left-width: 2px;
}

legt dickere Begrenzungslinien zwischen th und td und bei explizitem .separate
fest, und das soll *immer und ᅵberall* gelten, selbst wenn man auf die ganz
dᅵnnen Linien zwischen den Elementen mittels table.nolines verzichtet:

table.nolines td, table.nolines th {
border-style: none;
}

Die letztere Regel hat aber mehr Selektoren und ist daher stᅵrker. Natᅵrlich
kann man in der ersteren Regel noch ein paar ᅵberflᅵssige Selektoren dazufᅵgen
(z.B. jeweils "table" am Anfang), aber es wird immer unᅵbersichtlicher -- ich
hᅵtte lieber hingeschrieben, was gemeint ist als irgendetwas kryptisches, aus
dem dann nach komplexen Regeln das Gemeinte gemacht wird, was spᅵtestens bei
der nᅵchsten ᅵnderung nicht mehr funktioniert.

--
Helmut Richter

Thomas 'PointedEars' Lahn

unread,
Mar 18, 2013, 8:06:38 AM3/18/13
to
Helmut Richter wrote:

> Gehe ich recht in der Annahme, dass alle style-Eigenschaften von
> Tabellenspalten (also von <col>-Elementen) wie Rahmen, Farbe,
> Textausrichtung völlig wirkungslos für die Tabellenelemente sind, weil die
> keine Kinder der Spalten sind und daher nichts erben? Dass aber die
> Spaltenbreite trotzdem an die Nicht-Kinder vererbt wird? Falls ich damit
> richtig liege, wo hätte das gestanden?

Dass Du mindestens teilweise fhcsal liegst, steht in

<http://quirksmode.org/css/css2/columns.html>

welches auf

<http://www.w3.org/TR/CSS21/tables.html>

verweist.


PointedEars
--
CSS ist keine Darstellungsvorschrift, sondern ein Darstellungsvorschlag
mit eingebautem "Ich weiß es aber besser"-Recht auf Seiten des userAgent.

(Georg Maaß in dcljs <amuna7$9fbuu$1...@ID-3551.news.dfncis.de>)

Thomas 'PointedEars' Lahn

unread,
Mar 18, 2013, 8:16:36 AM3/18/13
to
Helmut Richter wrote:

> Die letztere Regel hat aber mehr Selektoren und ist daher stärker.
> Natürlich kann man in der ersteren Regel noch ein paar überflüssige
> Selektoren dazufügen (z.B. jeweils "table" am Anfang), aber es wird immer
> unübersichtlicher -- ich hätte lieber hingeschrieben, was gemeint ist als
> irgendetwas kryptisches, aus dem dann nach komplexen Regeln das Gemeinte
> gemacht wird, was spätestens bei der nächsten Änderung nicht mehr
> funktioniert.

„!important“ – „das hier ist wichtiger als alles andere, es sei denn, das
andere ist mindestens genauso wichtig“?


PointedEars
--
Man kann mit JavaScript eine große Zahl von Roundtrips eliminieren und
damit die Usability erhöhen. Allerdings übersteigen die Möglichkeiten
von JavaScript die zerebralen Fähigkeiten der meisten Webmaster bei
Weitem. -- Johann Burkard in dag°

Susanne Jäger

unread,
Mar 18, 2013, 8:22:12 AM3/18/13
to
Helmut Richter schrieb am 18.03.2013 12:37:
> Gehe ich recht in der Annahme, dass alle style-Eigenschaften von
> Tabellenspalten (also von <col>-Elementen) wie Rahmen, Farbe, Textausrichtung
> vᅵllig wirkungslos fᅵr die Tabellenelemente sind, weil die keine Kinder der
> Spalten sind und daher nichts erben? Dass aber die Spaltenbreite trotzdem an
> die Nicht-Kinder vererbt wird? Falls ich damit richtig liege, wo hᅵtte das
> gestanden?

Nicht ganz, sie vererben zwar nicht, aber border, background, width und
visibility funktionieren fᅵr komplette Spalten.

"Tables - Table cells may belong to two contexts: rows and columns.
However, in the source document cells are descendants of rows, never of
columns. Nevertheless, some aspects of cells can be influenced by
setting properties on columns.
The following properties apply to column and column-group elements:"
<http://www.w3.org/TR/CSS21/tables.html#columns>

und wenn dein englisch reicht als Hintergrund Hixie's Natural Log: The
mystery of why only four properties apply to table columns
<http://ln.hixie.ch/?start=1070385285&count=1>

> Konkreter Anwendungsfall: Ich mᅵchte Spaltengruppen voneinander
> abgrenzen. Bisherige Lᅵsung: eine Klasse "separate" fᅵr jedes einzelne
> Tabellenelement dieser Spalte, bei der ein linker Rahmen (border-left)
> dazugemalt wird. Sehr hᅵsslich aus zwei Grᅵnden:

Kannst du mal ein passendes Beispiel online verfᅵgbar machen? Ich steige
bei solch komplexen Code-Beispielen irgendwann mental aus, bedeutend
einfacher ist es das Weitere mit Analysewerkzeugen im Browser
nachzuvollziehen. Vielleicht hilft ja col.separate {border: ....} schon.

Gruᅵ
Susanne



Helmut Richter

unread,
Mar 18, 2013, 8:53:22 AM3/18/13
to
Erst einmal vielen Dank an beide Antwortenden. Die Stelle mit den vier an die
Stiefkinder vererbten Eigenschaften hatte ich nicht gleich gefunden --
manchmal habe ich Tomaten auf den Augen.

On Mon, 18 Mar 2013, Susanne Jᅵger wrote:

> Kannst du mal ein passendes Beispiel online verfᅵgbar machen?

Mache ich sonst gerne, wollte ich hier aber nicht, weil es genau an *dieser*
Stelle noch Ungereimheiten enthᅵlt, die ich kenne. Ein Beispiel "ich dachte,
so geht es, geht aber nicht" ist sinnvoll, aber ein Beispiel "ich weiᅵ schon,
dass es so nicht geht, aber kriegt ihr heraus, was ich eigentlich wollte"
finde ich doof.

> Vielleicht hilft ja col.separate {border: ....} schon.

Ja. Jedenfalls ist das ein weitaus einfacherer Ansatz als der bisherige und
rechtfertigt ein Neuschreiben dieses Teils des Stylesheets. Muss halt in den
Rest hineinpassen; da muss ich ordentlich nachdenken, welche schon
existierenden Teile mitbetroffen sein kᅵnnen. Ich versuche mᅵglichst viel per
Default zu lᅵsen und Klassen fᅵr Sonderwᅵnsche so zu bilden, dass man sie
*unabhᅵngig* voneinander einsetzen kann. Genau das funktionierte hier nicht,
weil die sich ins Gehege kamen.

--
Helmut Richter

Helmut Richter

unread,
Mar 18, 2013, 2:08:36 PM3/18/13
to
On Mon, 18 Mar 2013, Helmut Richter wrote:

> > Vielleicht hilft ja col.separate {border: ....} schon.
>
> Ja. Jedenfalls ist das ein weitaus einfacherer Ansatz als der bisherige und
> rechtfertigt ein Neuschreiben dieses Teils des Stylesheets.

Getan. Ist sogar noch einfacher: es wird einfach ein Rahmen um alle thead,
tbody, tfoot sowie colgroup gezogen. Damit sind 95% aller Fᅵlle erfasst, wo
ich das Bedᅵrfnis habe, eine Tabelle zu untergliedern. Da man keines dieser
Elemente unbedingt verwenden muss, hᅵlt sich die Zwangsbeglᅵckung in
Grenzen. Alle ᅵbrige machen dann eben lokalere style-Anweisungen.

Ein Fall funktioniert nicht wie erwartet. Ich dachte, wenn die Tabelle
eine "border-width: 2px" hat, dass das auch dann an Kinder wie <tbody>
mittels explizitem "border-width: inherit" vererbt werden mᅵsste, wenn die
Tabelle selbst ihren Rahmen mit "border-style: hidden" weglᅵsst.
Firebug behauptet aber eine ererbte "border-width: 0px" fᅵr <tbody>.
Mysteriᅵs.

Dafᅵr gibts ein Beispiel mit reichhaltigen style-Kommentaren: die erste
Tabelle in http://hr.userweb.mwn.de/srv/tab.html . (Diese Webseite enthᅵlt
ein paar real vorkommende Tabellen aus verschiedenen Artikeln zum Test, ob die
Voreinstellungen praktisch sind.)

Schlimm ist das nicht: ich kann ja "border-width: 2px" bei den Kindern von
<table> wiederholen. Ich wollte nur so viel wie mᅵglich vererben, z.B. auch
die Rahmenfarbe und -stᅵrke, wenn jemand lieber grᅵn-klotzig statt
stahlblau-schlank bevorzugt.

--
Helmut Richter

Susanne Jäger

unread,
Mar 19, 2013, 7:09:17 AM3/19/13
to
Helmut Richter schrieb am 18.03.2013 12:37:
> Gehe ich recht in der Annahme, dass alle style-Eigenschaften von
> Tabellenspalten (also von <col>-Elementen) wie Rahmen, Farbe, Textausrichtung
> vᅵllig wirkungslos fᅵr die Tabellenelemente sind, weil die keine Kinder der
> Spalten sind und daher nichts erben?

Wenn wir Glᅵck haben, kᅵnnte das Ganze in wenigen Jahren deutlich
einfach werden.

Selectors Level 4 - 14. Grid-Structural Selectors
<http://dev.w3.org/csswg/selectors4/#table-pseudos>

Ist bisher wohl noch nirgends implementiert, aber die Idee klingt nicht
schlecht. Aufmerksam wurde ich durch eine Anfrage in der Mailingliste
der CSS-WG
<http://lists.w3.org/Archives/Public/www-style/2013Mar/0291.html>ff

Es geht voran ;-)
Susanne
0 new messages