2016-12-10 4 views
-1

Sorry für einen schlechten Titel, wusste nicht wirklich besser zu beschreiben. Seite sieht so ausCSS Wählen Sie die letzte Klasse vor der anderen Klasse

hinweis: daten-ids sind zufällig und ich kenne sie nicht vorher.

<main> 
    <h2 class="title">title1</h2> 
    <div id="1-3" class="content" data-id="1"></div> 
    <div id="1-2" class="content" data-id="1"></div> 
    <div id="1-1" class="content" data-id="1"></div> 

    <h2 class="title">title2</h2> 
    <div id="2-11" class="content" data-id="2"></div> 
    <div id="2-10" class="content" data-id="2"></div> 
    <div id="2-9" class="content" data-id="2"></div> 

    <h2 class="title">title3</h2> 
    <div id="3-18" class="content" data-id="3"></div> 
    <div id="3-17" class="content" data-id="3"></div> 
    <div id="3-16" class="content" data-id="3"></div> 
</main> 

ist es eine Möglichkeit, alle aber zuletzt Inhalt divs nach jedem h2 in reinem CSS zu verbergen? Ich kann sie nicht einzeln mit ID oder Daten-ID ansprechen. Gibt es eine Möglichkeit, alle Elemente mit demselben nicht spezifizierten Attribut auszuwählen? also alle daten-id = "selbe" sind ausgewählt und dann kann ich das nth-last-child (1) einblenden? Ich bezweifle, dass es so etwas gibt. Gibt es eine Möglichkeit, dies nur mit CSS zu erreichen?

Ich verstecke derzeit jeden .content, wenn das nächste Geschwister nicht .content mit js ist, aber wissen möchte, ob es mit CSS möglich ist.

+0

Sie wollen also alle bis auf einen div mit Content-Klasse nach title3 Recht verbergen? –

+0

Was genau möchten Sie auswählen und was nicht? – Oriol

+0

@Oriol Ich möchte div id 1-1, 2-9 und 3-16 zeigen. und möchte andere Inhalts-divs verstecken. – DD3R

Antwort

0

Es ist nicht möglich, ohne irgendwelche scripting..you Javascript oder Jquery verwenden müssen

+0

Ja, wie ich schon sagte, ich mache das gerade mit js, fragte mich nur, ob ich ohne es auskommen könnte. Danke für die Antwort. – DD3R

+0

Ja..wenn es möglich ist, dass seine Frage .. – Darshak

+0

Sorry was? .... – DD3R

0

ich versucht würde vorschlagen, jeden Block von

setzen
<h2 class="title">title2</h2> 
<div id="2-11" class="content" data-id="2"></div> 
<div id="2-10" class="content" data-id="2"></div> 
<div id="2-9" class="content" data-id="2"></div> 

in einem <section>, wie folgt aus:

<section> 
<h2 class="title">title2</h2> 
<div id="2-11" class="content" data-id="2"></div> 
<div id="2-10" class="content" data-id="2"></div> 
<div id="2-9" class="content" data-id="2"></div> 
</section> 

Dann können Sie ...

div { 
 
display: none; 
 
width: 200px; 
 
height: 40px; 
 
color: rgb(255,255,255); 
 
} 
 

 
section:nth-of-type(1) div { 
 
background-color: rgb(255,0,0); 
 
} 
 

 
section:nth-of-type(2) div { 
 
background-color: rgb(0,127,0); 
 
} 
 

 
section:nth-of-type(3) div { 
 
background-color: rgb(0,0,255); 
 
} 
 

 
section div:last-of-type { 
 
display: block; 
 
}
<main> 
 
    <section> 
 
    <h2 class="title">Title 1</h2> 
 
    <div id="1-3" class="content" data-id="1">Div 1</div> 
 
    <div id="1-2" class="content" data-id="1">Div 2</div> 
 
    <div id="1-1" class="content" data-id="1">Div 3</div> 
 
    </section> 
 

 
    <section> 
 
    <h2 class="title">Title 2</h2> 
 
    <div id="2-11" class="content" data-id="2">Div 1</div> 
 
    <div id="2-10" class="content" data-id="2">Div 2</div> 
 
    <div id="2-9" class="content" data-id="2">Div 3</div> 
 
    </section> 
 

 
    <section> 
 
    <h2 class="title">Title 3</h2> 
 
    <div id="3-18" class="content" data-id="3">Div 1</div> 
 
    <div id="3-17" class="content" data-id="3">Div 2</div> 
 
    <div id="3-16" class="content" data-id="3">Div 3</div> 
 
    </section> 
 
</main>

+0

Ja, wenn ich HTML ändern könnte, als es wäre trivial, aber scheint wie das, was ich fragte, ist unmöglich mit CSS derzeit zu tun. Wie auch immer, ich brauche es nicht mehr, also keine große Sache. – DD3R

+0

Hmm. Du hast nicht erwähnt, dass du HTML nicht ändern kannst. Das ist keine normale Situation. Und selbst dann, wenn man von anderen Faktoren abhängt, ist es absolut möglich, alle Divs außer dem letzten nach jedem 'h2' zu verstecken. Wenn Sie beispielsweise immer ein 'h2' gefolgt von zwei versteckten' divs' gefolgt von einem sichtbaren 'div' haben, können Sie den Selektor verwenden:' main: nth-child (4n-1), main: nth-child (4n-2) 'um die versteckten' divs' zu verstecken. – Rounin

+1

Ja, ich habe keine HTML erwähnt, weil ich gefragt habe, ob es in reinem CSS gemacht werden könnte. divs Zahlen nach h2 variieren, so dass die Methode nicht funktionieren würde. Es ist jedoch kein Problem mehr, ich habe es mit Javascript arbeiten lassen, da es mit CSS nicht möglich war. Danke für Ihre Hilfe. – DD3R

Verwandte Themen