Ich habe ein Problem, bei dem ich mich nicht entscheiden kann, wie ich meinen Baum am besten mit CSS streifen kann.
Das Problem tritt auf, weil, wenn Sie auf einen Knoten im Baum klicken, seine untergeordneten Elemente ausgeblendet werden, aber dennoch zu den Selektoren für „ungerade vs. gerade untergeordnete Elemente“ zählen. Eine Möglichkeit besteht darin, dies zu umgehen, indem Sie Selektoren schreiben, die Kinder und Eltern getrennt zählen und die Kinder mit der entgegengesetzten Farbe ihres Elternteils beginnen, aber wenn Sie eine gerade Anzahl von Kindern haben, hat das letzte die gleiche Farbe wie das nächste Elternteil.
Also, um es etwas verständlicher zu machen:
[Elternteil – grauer Streifen]
[Kind – weiß]
[Kind – grau]
[Kind – weiß]
[Elternteil2 – weiß]
Das Problem tritt auf, wenn die Eltern abwechselnd gestreift sind - ich möchte dies vermeiden, damit die Kinder und die darauf folgenden Eltern nicht die gleiche Streifenfarbe haben.
Unterm Strich kann dies nicht mit CSS gelöst werden, es sei denn, wir fügen physisch Zeilen hinzu und entfernen sie, was erfordert, dass wir die Implementierung der von uns verwendeten Tabelle ändern.
Kennt jemand eine bessere Möglichkeit, dieses Problem zu lösen?
Ich weiß nicht, ob dies eine praktikable Option für Sie ist, aber ich würde das Styling so ändern, dass klar ist, welche Zeilen untergeordnete Zeilen sind. Anstelle von zwei Farben für die Zebrastreifen würde ich vier verwenden. Ich würde auch verschachtelte Tabellen verwenden:
Es gibt immer noch eine Gerade/Ungerade-Kollision, aber es ist immer noch so für mich lesbar. So würde es zusammengeklappt aussehen:
Verwenden Sie einfach eine separate Klasse für die übergeordneten Zeilen.
Mit einer separaten Klasse auf übergeordneten Zeilen können Sie dies unabhängig steuern. Vom visuellen Standpunkt aus sollten übergeordnete Zeilen meiner Meinung nach nicht im gleichen Farbton erscheinen wie standardmäßige untergeordnete Zeilen. Hier ist ein Beispiel:
table { width: 80%; margin: 40px;}
td { padding: 6px 10px; }
tr.parent:nth-of-type(2n+1) { background:#a00; }
tr.parent:nth-of-type(3n+0) { background:#00a; }
tr.parent:nth-of-type(3n+1) { background:#a00; }
tr:nth-child(odd) { background:#fff; }
tr:nth-child(even) { background:#eee; }
Natürlich kann es bei einem großen Tisch etwas in die Jahre kommen. In diesem Fall ist jquery möglicherweise besser geeignet oder in separaten Klassen für abwechselnde übergeordnete Zeilen fest codiert. Vieles, was möglich ist, hängt von der HTML-Struktur ab.
Lauren-Clear-Monica-Ipsum
John
JohnB
Hanna