web-dev-qa-db-fra.com

un CSS entier ".class" peut-il avoir sa spécificité comme! important?

Je travaille énormément dans les widgets jQuery UI et le thème devient difficile en raison d'un oubli que je dois contourner.

Considérez ce problème:

<div id="node" class="ui-widget">
    <div class="ui-widget-content">
    </div>
</div>

alors ce jquery

<script>
 $(function() { 
       $('#node').hover(function (){
           $(this).toggleClass("ui-state-error");
       });
 }); 
</script>

Je voudrais que l'erreur ui-state soit! Importante pour la div imbriquée. C'est du pseudo code, mais je trouve de grands exemples de ce qui se passe où les conteneurs ont des swaps css et les enfants (en gros) l'ignorent. Ce qui est encore pire, c'est ceci: si je voudrais pouvoir écraser dans jQuery dire "backgroundcolor = ui-state-error: background-color sachant à 100%, tout ne va pas s'effondrer parce que je ne" sais "pas nécessairement que ce contexte est important pour l'élément en question.

voici un violon d'un cas d'espèce http://jsfiddle.net/WCuYH/1/

MODIFIER Je vais recommander que cette question soit fermée car il n'y a pas eu de tentatives de réponses, seulement trop de dérive par rapport à l'essence du message d'origine

21
MacLovin

Tout d'abord !important s'applique à une déclaration spécifique dans une règle CSS. Cela ne s'applique pas à une classe. Donc, "non", vous ne pouvez pas créer une classe !important.

Deuxième arrêt, !important n'est qu'une partie de la spécificité CSS. Vous pouvez également utiliser d'autres façons de faire d'une règle une règle plus spécifique pour avoir la priorité (comme faire référence à un identifiant dans la chaîne parent au lieu de simplement la classe. Lorsque j'écris CSS, utiliser! Important est mon dernier choix possible - Je préfère de loin résoudre les remplacements avec d'autres solutions de spécificité. Habituellement, si vous contrôlez tous les CSS, il est assez facile d'éviter d'utiliser !important. Si vous devez remplacer certains CSS que vous ne contrôlez pas, cela est parfois pratique.

Si votre code jQuery va basculer une classe sur l'objet, alors vous devrez créer vos règles CSS afin que l'ajout/la suppression de cette classe entraîne la priorité des bonnes déclarations CSS. Pour que nous puissions vous aider davantage avec cette partie, vous devrez nous montrer les parties pertinentes de votre code HTML et CSS afin que nous puissions vous conseiller sur la façon de résoudre votre problème de priorité/spécificité.

18
jfriend00