2012-01-09 6 views
7

¿Cómo seleccionaría las imágenes de este documento que no están dentro de un elemento con una clase .todeep? En el caso a continuación, se deben seleccionar el segundo y el tercer elemento. No sé cuán profundas serán las imágenes después de un elemento "todeep".selector de CSS, no es descendiente de

<body> 
    <div class="todeep"> 
     <img> 
    </div> 
    <div> 
     <img> 
     <div> 
      <img> 
      <div class="todeep"> 
       <img> 
       <div> 
        <img /> 
       </div> 
      </div> 
     </div> 
    </div> 
</body> 

pensé por primera vez de una solución sencilla: *: no img (.todeep), pero esto también seleccionar las imágenes que tienen un elemento no "todeep" entre sus antepasados ​​también.

+0

posible duplicado de [selectores CSS Negativo] (http://stackoverflow.com/ preguntas/726493/negative-css-selectores) – Neil

Respuesta

4

Deberá seleccionar todas las imágenes y luego negar las que tienen un elemento primario .todeep.

Así que en lugar de

img { background-color: blue; width: 20px; height: 20px; } 
*:not(.todeep) img { background-color: red; } 

uso

img { background-color: red; width: 20px; height: 20px; } 
.todeep img { background-color: blue; } 

(código de ejemplo tomado de Usted de jsfiddle)

+0

Esto es solo para niños 'img', no para descendientes de ningún nivel. Reemplace el selector de niños con el selector de descendientes. – BoltClock

+0

@BoltClock: tienes razón, arreglado. – Bergi

Cuestiones relacionadas