2012-03-16 36 views
14

Por ejemplo:cómo aplicar la regla css al elemento anterior y al siguiente en HTML?

Tiene esto:

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

eso es posible?

+1

no creo que un CSS única solución está disponible, pero a * * opción JavaScript puro sería: http://stackoverflow.com/questions/574904/get-next-previous-element-using- javascript – Greg

+0

posible duplicado: http://stackoverflow.com/q/1817792/3597276 –

Respuesta

23

No es posible con css puro. Puede diseñar el siguiente elemento, pero no el anterior.

Pero puedes hacer un truco con css. En lugar de dar la clase seleccionada puede dar clase a su elemento anterior. De esta manera:

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

Marque esta http://jsfiddle.net/S5kUM/2/

2

Esto debería hacerse con JavaScript.

Si está utilizando jQuery, se puede hacer así:

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

'cómo aplicar la regla de CSS' implica OP quiere respuesta de CSS – Starx

6

Se llama hermanos de selección:

.selected + li { 
    color: red; 
} 

violín here

Sin embargo, no hay ningún selector de hermanos de el elemento anterior.

Cuestiones relacionadas