2012-03-16 6 views
14

Na przykład:jak zastosować regułę css do poprzedniego i następnego elementu w HTML?

Trzeba to:

<ul> 
<li>zero</li> 
<li>one</li> 
<li class="selected">two</li> 
<li>three</li> 
<li>more elements</li> 
</ul> 

CSS:

.selected:previous { 
    color: red; 
} 

.selected:next { 
    color: green; 
} 

To możliwe?

+1

Nie myśl CSS jedynym rozwiązaniem jest dostępny, ale czysty * a * opcja JavaScript byłoby: http://stackoverflow.com/questions/574904/get-next-previous-element-using- javascript – Greg

+0

możliwy duplikat: http://stackoverflow.com/q/1817792/3597276 –

Odpowiedz

23

Nie jest to możliwe z czystym css. Możesz stylować następny, ale nie poprzedni element.

Ale możesz zrobić lewę z css. Zamiast dać klasę wybraną możesz dać klasę swojemu poprzednim elementowi. Tak:

HTML

<ul> 
<li>zero</li> 
<li class="previous">one</li> 
<li>two</li> 
<li>three</li> 
<li>more elements</li> 
</ul> 

CSS

.previous{ 
    color: green; 
} 
.previous + li{ 
    color: red; 
} 
.previous + li + li{ 
    color:yellow; 
} 

Sprawdź tej http://jsfiddle.net/S5kUM/2/

2

Należy to zrobić za pomocą JavaScript.

Jeśli używasz jQuery, można to zrobić tak:

$('.selected').prev().css('color', 'red'); 
$('.selected').next().css('color', 'green'); 
+4

"jak zastosować regułę css" oznacza, że ​​OP chce odpowiedzi CSS – Starx

6

Nazywa selektor rodzeństwa:

.selected + li { 
    color: red; 
} 

Fiddle here

Jednak nie ma selektor rodzeństwa dla poprzedni element.