2009-08-09 17 views
9

Duplicar posibles:
Is there a CSS parent selector?CSS Padre/Selector antepasado

Sé que esto es un tiro en la oscuridad, pero hay una manera, usando CSS solamente, CSS2, sin jQuery , no javascript, para seleccionar y dar estilo al antecesor de un elemento? He revisado los selectores pero estoy publicando esto en caso de que haya olvidado algo o haya una solución inteligente.

Por ejemplo, supongamos que tengo una tabla con el nombre de clase "test" anidado dentro de un div. ¿Hay algún tipo de:

<div> 
    <table class="test"> 
    </table> 
</div> 
div (with child) .test 
{ 
    /*styling, for div, not .test ...*/ 
} 
+0

¿Hay algún problema al agregar una clase al div que contiene? – rossipedia

Respuesta

9

No hay tal cosa como selector de matriz en CSS2 o CSS3. Y tal vez nunca lo haya, porque la parte completa de "CSS" en cascada no será fácil de manejar una vez que empiezas a seleccionar padres.

Eso es lo que jQuery es para :-)

+8

jQuery y JavaScript en general es para agregar funcionalidad de interfaz de usuario; no para especificar ningún estilo. jQuery y JavaScript se utilizan para el estilo debido a las deficiencias de CSS, pero no son para este propósito. – Scharrels

+10

Primero de todo, hay un emoticono después de esa frase. En segundo lugar, no estoy de acuerdo. ¿Sería mejor poder especificar todos los aspectos de presentación a través de CSS? Por supuesto. ¿Es posible? No. jQuery es una herramienta brillante que te permite enriquecer la experiencia del usuario, y si eso incluye establecer un estilo que de otra manera sería imposible establecer de manera consistente, eso es exactamente lo que voy a hacer. – ChssPly76

+2

-1 para jQuery donde OP simplemente podría recurrir a vanilla JS. – PeeHaa

6

En CSS hay una: selector de vacío que permite hacer coincidir los elementos vacíos, se puede anular el efecto con: No selector.

div:not(:empty) { 
    // your styles here 
} 

Sin embargo, no estoy seguro si todos los navegadores admiten esto.

2
div:not(:empty) { 
    margin:0; 
} 

no es reconocido por http://jigsaw.w3.org/css-validator/ como CSS2

es el propósito de la CSS para "cascada" hacia abajo desde el más que contiene a los elementos más específicos. Creo que es posible que usted pueda "invertir la lógica", como en

div.myclass { /* format parent */ } 
div.myclass * { /* neutralize formats in descendants */} 
div.myclass img { /* more specific formats for img children */ } 

buena suerte Mike

+0

Eso no puede variar el formato del padre en función de los descedendents que tiene, que es lo que el OP estaba pidiendo. – ChrisW

Cuestiones relacionadas