2010-12-09 26 views
3

Je dois définir un style sur la div dans la première classe faq-category-group sans affecter le style du groupe faq-category à l'intérieur un faq-category-indent. Comment cela peut-il être fait?Comment appliquer un style css à une classe qui ne contient pas de sous-classe

Les classes sont générées automatiquement par un module PHP, donc changer les noms de classe pour faciliter les sélecteurs n'est pas une option.

<div class="faq"> 
    <div class="faq-category-group">Content</div> 

    <div class="faq-category-indent"> 
     <div class="faq-category-group">Content</div> 
    </div> 
</div> 
+0

@zanlok: Le balisage n'était pas indenté correctement donc il était interprété comme HTML. Je l'ai réparé. – BoltClock

Répondre

2

Par cette structure, sélectionnez uniquement les groupes qui sont des enfants de <div class="faq"> et appliquer les styles que vous ne voulez pas appliquer à des groupes dentelées. Les groupes contenus dans <div class="faq-category-indent"> ne seront pas affectés.

.faq .faq-category-group { 
    /* Styles for all groups */ 
} 

.faq > .faq-category-group { 
    /* Styles for non-indented groups */ 
} 

Cela suppose que vous ne vous souciez pas de IE6, bien sûr. Dans le cas contraire, une autre solution plus bavard est la suivante:

.faq .faq-category-group, .faq .faq-category-indent .faq-category-group { 
    /* Styles for all groups */ 
} 

.faq .faq-category-group { 
    /* 
    * Styles for non-indented groups. 
    * Works because .faq .indent .group above is more specific than 
    * this one, so the above rule will override this one. 
    */ 
} 

Voici un jsFiddle example qui couvre les deux cas.

+0

IE7 et IE8 semblent également avoir un problème avec le premier échantillon (au moins comme je les ai testés, ils l'ont fait). –

+0

@Joel: [Travaille pour moi] (http://jsfiddle.net/BoltClock/NY5WS/) – BoltClock

+0

Je suis en quelque sorte "debout corrigé". Lorsque vous voyez votre lien, je vois que cela fonctionne. Lorsque vous collez votre style dans mon test, cela ne fonctionne pas. Je ne peux pas expliquer la raison de la différence, donc je vais conclure que mes tests ne sont pas utiles. –

0
.faq > .faq-category-group { 
    /*style*/ 
} 

devrait fonctionner

Source: http://www.w3.org/TR/css3-selectors/

+0

Cela ne fonctionne que dans css3. Cela échoue dans les versions inférieures. –

+0

@Joel: Non, '>' est un sélecteur CSS2. Il échoue seulement dans IE <= 6. – BoltClock

+0

@BoltClock - Je viens de le tester dans IE7 et IE8, et il a échoué. –

1

Vous devez indiquer la différence dans les classes individuellement:

.faq .faq-category-group 
{ 
    color: #00ff00; 
} 

.faq .faq-category-indent .faq-category-group 
{ 
    color: #0000ff; 
} 

Cela forcera celui à style selon les parents .faq et l'autre selon le parent .faq-category-indent.