Stil Kinder Elemente basierend auf der Anzahl innerhalb ihrer Eltern

7

Dies ist ein erfundenes Beispiel für eine Art von Problemen, die ich täglich habe, wenn ich ein Content-Management-System verwende, das den HTML-Code für jede Menge Webseiten erstellt, und ich brauche allgemeine Methoden, CSS entsprechend anzuwenden zu Modellen. Ich frage mich, ob es eine nicht-Javascript-Möglichkeit gibt, es zu lösen.

Angenommen, ich habe ein div der Klasse some-div , das entweder 1 oder 2 Kind div s hat. Wenn es 1 Kind div hat, sollte dieses Kind einen red Hintergrund haben; Wenn es 2 untergeordnete divs hat, sollten sie blue backgrounds haben:

%Vor%

Gibt es eine Möglichkeit, dies in CSS zu tun? Ein Hack, vielleicht?

    
BoltClock 24.12.2014, 19:49
quelle

5 Antworten

10

Nun, ich werde höhlen. Hier ist meine Lösung

Ссылка

%Vor% %Vor%

Bearbeiten

Offenbar gibt es auch den :only-child Selektor, den ich gefunden habe, indem ich in @LiorRazs Kommentar

Es hat ungefähr so ​​viel Unterstützung wie :last-child

Wäre es wert, wenigstens nachzusehen. Hier ist ein eingebettetes Beispiel.

%Vor% %Vor%
    
Joseph Marikle 24.12.2014 20:00
quelle
6

Sie können das div mit css pseudo FIDDLE HERE

anvisieren

CSS

%Vor%     
Chrys Ugwu 24.12.2014 20:38
quelle
5

Für moderne Browser, die das :nth-last-of-type ( Ссылка ) unterstützen )

%Vor%

Demo bei Ссылка

    
Gaby aka G. Petrioli 24.12.2014 19:59
quelle
4

Ja, das kannst du mit nth-of-type machen. Setzen Sie alle auf background-color: red , dann können Sie jedes .some-class nach dem ersten Ziel ausrichten und die Farbe div in blau überschreiben:

%Vor%

FIDDLE

UPDATE FÜR ckuijjer

Wer hat gesagt: don't think this is a solution. The question is can you color the child <div>'s a red if there it's the only child and blue if there are two children.

Ja, du kannst. Hier ist wie:

%Vor%

FIDDDLE

Unterm Strich ist das, wie man es macht, egal was der OP in seiner Erklärung darzustellen versuchte und ob ich oder irgendjemand sonst verstand, was er / sie eigentlich wollte, die Antwort (Fragentitel war: Is it possible to do this with only CSS? ) ist: Ja, es kann nur mit CSS gemacht werden. Brauche einfach die richtige Gleichung.

    
jmore009 24.12.2014 19:54
quelle
0

Fügen Sie einfach eine Klasse zu allen, die Sie wollen, rot, und eine separate zu allen, die Sie wollen, blau. Beispiel:

%Vor%     
Horray 24.12.2014 19:53
quelle

Tags und Links