2012-03-16 15 views
14

Per esempio:come applicare la regola css al precedente e al successivo elemento in HTML?

Hai questo:

<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; 
} 

che sia possibile?

+1

Non credo che un CSS unica soluzione è disponibile, ma un puro * opzione * JavaScript sarebbe: http://stackoverflow.com/questions/574904/get-next-previous-element-using- javascript – Greg

+0

possibile duplicato: http://stackoverflow.com/q/1817792/3597276 –

risposta

23

Non è possibile con puro css. Puoi disegnare l'elemento successivo ma non precedente.

Ma puoi fare un trucco con css. Invece di dare la classe selezionata puoi dare classe al tuo elemento precedente. Come questo:

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; 
} 

Scegli questa http://jsfiddle.net/S5kUM/2/

2

Questo dovrebbe essere fatto con JavaScript.

Se si utilizza jQuery, si può fare in questo modo:

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

'Come applicare la regola css' implica che OP vuole una risposta CSS – Starx

6

Si chiama selettore fratello:

.selected + li { 
    color: red; 
} 

Fiddle here

Tuttavia, non v'è alcun selettore fratello per l'elemento precedente.

Problemi correlati