2012-07-04 13 views
7

Mam następujący fragment kodu HTML:CSS pierwszym dzieckiem określonej klasy

<span class="ui-icon ui-icon-triangle-1-s"></span> 
<span class="route-line">4</span> 
<span class="route-line">33</span> 

chciałbym dodać trochę stylu na pierwszyspan z class="route-line". Czy to możliwe z CSS? Jest to coś w rodzaju nth-of-type; gdyby istniał, zostałby nazwany nth-of-type-with-class.

Dziękujemy!

Odpowiedz

3

pierwsze przęsło z klasy .route linii następnie dla każdego innego elementu, które nie mają klasy .route linię

*:not(.route-line) + span.route-line 
{ 
    background-color:yellow; 
} 
+0

Działa, ale czy nie jest to "* dość czasochłonne? – linkyndy

+0

Możesz zamienić * na rozpiętość, jeśli zauważysz jakiekolwiek spowolnienie. – Leo

+0

Zgadza się. Jest podobny do poprzedniej akceptowanej odpowiedzi, ale uważam, że ta jest bliższa temu, czego potrzebuję. Dzięki! – linkyndy

2

Dlaczego nie zastosujesz innej klasy do elementu, który chcesz stylować.

<span class="ui-icon ui-icon-triangle-1-s"></span> 
<span class="route-line custom-route-line">4</span> 
<span class="route-line">33</span> 

A css wyglądałby następująco

.custom-route-line{/*your styling goes here*/} 

Uwaga oba style klas (trasa linii & zwyczaj-route-Line) będą miały zastosowanie do tego elementu. Take a look here

+1

Wiem, ale chciałem, aby kod HTML był jak najbardziej czysty. – linkyndy

9

W takich przypadkach można użyć selektora rodzeństwa. Tak:

.ui-icon + .route-line{ 
    color: red; 
} 

Będzie projektować tylko span które towarzyszą mu element z klasy ui-icon.

+0

+1 za nową technikę, której nie znałem. – menislici

+0

Będę prawdopodobnie trzymać się tego rozwiązania, dopóki nie znajdę lepszego. Dzięki! – linkyndy

1

czego szukasz span.route-line:first-of-type, ale jest słabo obsługiwany .

Powiązane problemy