7
votes

Comment exclure une classe avec tous les enfants dans la définition de style

J'ai un fichier comme xxx

ce que je veux faire est d'appliquer des styles uniquement à la première div. J'ai essayé d'utiliser div: pas (.abc, .abc *) , div: non (.abc): pas (.abc *) , , Div: pas (.abc), div: pas (.abc) * mais aucun de ces a fonctionné. Il serait difficile de modifier le code HTML, car il y aurait de nombreux fichiers à éditer. De plus, le code présenté ci-dessus apparaît à différents endroits. L'utilisation de Sélecteur > n'est pas la solution ... Est-ce que quelqu'un sait faire cela?


1 commentaires

Vous avez déjà exclu la meilleure solution > (combinateur immédiat-enfant).


5 Réponses :


0
votes

Utiliser : premier enfant avec l'identifiant ou la classe de son élément parent. Si vous ne parvenez pas à attraper l'élément en utilisant CSS, il est suggéré d'utiliser JavaScript ou jQuery . .


1 commentaires

Ce n'est pas une bonne idée de «sauter à JQuery» immédiatement. CSS peut faire ce que la question indique si elle est utilisée correctement.



1
votes

Je trouve généralement qu'il est plus facile d'inclure ce dont vous avez besoin via une classe, essayez d'exclure des éléments descendants. Voir le violon ici: http://jsfiddle.net/clthg/

qui prend soin des problèmes d'héritage et est beaucoup plus cross-navigateur.


0 commentaires

0
votes

Avez-vous essayé : premier enfant ou : Nth-enfant () Selecor?


1 commentaires

Puisque vous essayez de saisir le premier div alors je ce que cela pourrait être utile



10
votes

Vous ne pouvez pas utiliser de manière fiable le sélecteur pas () code> dans CSS pour exclure un élément et / ou ses descendants. La raison de celle-ci est expliquée dans Cette réponse (et d'autres que cela lie pour):

Vous ne pouvez pas utiliser des combinaisons. Cela fonctionne dans JQuery, mais pas CSS: P>

/* 
 * Grab everything that is neither #foo itself nor within #foo.
 * Notice the descendant combinator (the space) between #foo and *.
 */
:not(#foo, #foo *)


0 commentaires

0
votes

Si vous ne touchez pas vraiment le HTML, une simple approche sale serait d'appliquer des styles sur le premier div puis de les retirer des divs suivants, comme:

div {margin-bottom: 20px; border: 1px solid #ccc;}
div div {margin-bottom: 0; border: none;}


0 commentaires