2016-11-06 4 views
0

Ich erstelle eine gemeinsame css-Benutzerdatei für zwei verschiedene Webseiten. Ich habe Listen auf zwei verschiedenen Seiten ungeordnet. In der tatsächlichen HTML gibt es viele ungeordnete Listen tief verschachtelt in divs und was haben Sie. Die tatsächliche Anzahl der Listenelemente ist größer als hier gezeigt. Ich muss den ersten Satz von Listenelementen anders als den zweiten Satz formatieren. Es gibt nichts anderes in der ul-Codierung. Es gibt zu viel CSS für andere Unterschiede.Verweis auf Geschwisterlistenelemente

<-- list in first page --> 
<ul class="our-list"> 
<li class="group item" data-filter-id="draft">a little bit of <span>text</span></li> 
<li class="group item" data-filter-id="contentstatus[published]">other <span>text</span></li> 
<li class="group item" data-filter-id="participated">last of the <span>text</span></li> 
</ul> 

<-- list in second page --> 
<ul class="our-list"> 
<li class="group item" data-filter-id="One">a little <span>text</span></li> 
<li class="group item" data-filter-id="Two">the <span>text</span></li> 
<li class="group item" data-filter-id="Three">last <span>text</span></li> 
</ul> 

Der einzige erkennbare Unterschied, den ich bemerkt habe, ist unterschiedliche Daten-Filter-ID-Felder. Ich muss auf die Span-Tags in der ersten Liste und nicht auf die zweite verweisen.

Ich habe diese CSS geschrieben, um die erste li in der ersten Liste Adresse:

li[data-filter-id="draft"] span { 
     background-color: yellow !important; 
     } 

Gibt es irgendeine Art und Weise an die Geschwister li-Tags in diesem CSS zu verweisen? Ich konnte Code:

li[data-filter-id="draft"] span, 
li[data-filter-id="contentstatus\[published\]"] span, 
li[data-filter-id="participated"] span, { 
     background-color: yellow !important; 
     } 

Aber gibt es einige Abkürzung I-Code könnte, um alle benachbarten Listenelemente zur Liste zu haben?

Dies ist der richtige Weg, um die eingebetteten [] in CSS zu entkommen?

li[data-filter-id="contentstatus\[published\]"] span, 

Ist dies der richtige Weg, um die Klasse für das li-Tag in die CSS aufzunehmen?

li.group.item[data-filter-id="draft"] span, 
+0

Sind die Eltern- und Vorfahrelemente die gleichen für die "ul" auf beiden Seiten? Alles, was Sie brauchen, ist eine eindeutige ID als Vorfahre auf der ersten Seite (mit anderen Worten, die ID ist auf allen Seiten eindeutig), dann können Sie die UL zu einem Nachkomme dieser ID machen, und es gilt nur zu dieser Seite. –

+0

Ich schaute auf die vorhergehenden acht Ebenen und die CSS-Tags sind alle gleich. Es gibt ungefähr 65k Zeilen HTML. Die erste Seite ist: die zweite Seite ist https://discussions.apple.com/community/mac_os/mac_os_x_technologies/content Ich formatiere die Seitenleiste neu – historystamp

+0

Ich muss jetzt laufen, aber wenn möglich, finden Sie ein einzelnes Element, das für diese Seite und höher im DOM eindeutig ist. Machen Sie Ihre "ul" zu einem Nachkomme und das sollte funktionieren. Ich werde später zurückkommen. Viel Glück. –

Antwort

1

Verwenden ul:first-of-type > li als Selektor für alle li Elemente innerhalb der ersten ul

Wenn das nicht ausreicht (schreiben Sie über verschiedene Seiten), eine Klasse auf der nach ul verwenden und das Kind ansprechen li s der Klasse wie ul.my-class > li

+0

aber ich weiß nichts Besonderes über die ul. Die Klasseninformation ist die gleiche auf der Ul. – historystamp

+0

Sie können also den HTML-Code nicht ändern (z. B. eine Klasse hinzufügen)? In diesem Fall hat der 'body'tag vielleicht eine eindeutige ID oder Klasse (Wordpress zum Beispiel macht das automatisch). Dann könnten Sie selector wie '.page1 ul: first-of-type> li' verwenden – Johannes