Puis-je écrire un sélecteur CSS de la sélection d'éléments PAS d'avoir une certaine classe?
Je voudrais écrire un sélecteur CSS règle qui sélectionne tous les éléments qui ne pas ont une certaine classe. Par exemple, le code HTML suivant:
<html class="printable">
<body class="printable">
<h1 class="printable">Example</h1>
<nav>
<!-- Some menu links... -->
</nav>
<a href="javascript:void(0)" onclick="javascript:self.print()">Print me!</a>
<p class="printable">
This page is super interresting and you should print it!
</p>
</body>
</html>
Je voudrais écrire un sélecteur qui permet de sélectionner tous les éléments qui n'ont pas la "imprimable" de la classe qui, dans ce cas, sont les nav et un éléments.
Est-ce possible?
REMARQUE: dans le code HTML réel où je voudrais l'utiliser, il va être beaucoup plus d'éléments que ne pas ont la "imprimable" de la classe de le faire (je me rends compte que c'est l'inverse dans l'exemple ci-dessus).
Vous devez vous connecter pour publier un commentaire.
Généralement vous ajouter un sélecteur de classe à la
:not()
pseudo-classe comme ceci:Mais si vous avez besoin d'une meilleure prise en charge du navigateur (IE8 et plus anciens ne prennent pas en charge
:not()
), vous êtes probablement mieux de créer des règles de style pour les éléments qui ne ont la "imprimable" de la classe. Si même cela n'est pas possible, malgré ce que vous dites à propos de votre majoration réelle, vous pourriez avoir à travailler votre balisage autour de cette limitation.Gardez à l'esprit que, selon les propriétés de la configuration de cette règle, certains d'entre eux peuvent être héritées par les descendants que sont
.printable
, ou autrement affecter d'une manière ou d'une autre. Par exemple, bien quedisplay
n'est pas héréditaire, réglagedisplay: none
sur un:not(.printable)
l'empêcher et tous ses descendants à partir de l'affichage, puisqu'elle supprime l'élément et sa sous-arborescence de la mise en page complètement. Bien souvent, vous pouvez contourner ce problème en utilisantvisibility: hidden
à la place qui permettra visible descendants de spectacle, mais les éléments cachés affecte toujours mise en page que ce qu'ils avaient fait. En bref, il suffit de faire attention.:not()
sur l'écran, il ne le supportent pas en imprimer.:not()
ne prend que simple sélecteur qui signifie ne peut pas contiennent imbriqués les sélecteurs comme:not(div .printable)
- voir W3C Sélecteur de syntaxe:not(.active)
règle peut avoir simplement été remplacée par les propriétés de la règle(s) de priorité supérieure.:not
a moins spécifique que d'un sélecteur de classe. Cela signifie que toutes les classes et les sélecteurs d'id de la remplacer. Si vous avez des règlesdiv:not(.a)
etdiv.b
et un élément HTML<div class="b">
Il va suivre lediv.b
sélecteur, même si c'est avant ladiv:not(.a)
sélecteur.:not()
est que de son argumentation, ce qui signifie:not(div)
est également spécifique àdiv
,:not(.cls)
à.cls
et:not(#id)
à#id
.:not
serait se comporter comme tous les autres du côlon sélecteurs.En fait, cela permet de sélectionner tout ce qui n'est pas une classe css (
class="css-selector"
) sont appliqués.J'ai fait un jsfiddle démo
CSS:
HTML:
Est-ce pris en charge? Oui : Caniuse.com (consulté le 25 Août 2014):
Drôle modifier, j'ai été Googler le contraire de :pas. CSS négation?
La
:non
négation pseudo classeVous pouvez utiliser
:not
à exclure tout sous-ensemble d'éléments qui correspondent, ordonné, comme vous le feriez normal sélecteurs CSS.Exemple Simple: à l'exclusion de la classe
div:not(.class)
Sélectionnez tous les
div
éléments sans la classe.class
CSS:
HTML:
Exemple complexe: l'exclusion par type /hiérarchie
:not(div) > div
Sélectionnez tous les
div
éléments qui ne sont pas les enfants d'un autrediv
CSS:
HTML:
Exemple complexe: le chaînage de pseudo-sélecteurs
À l'exception notable de ne pas être capable de la chaîne d'/nid
:not
les sélecteurs et les pseudo-éléments, vous pouvez utiliser en conjonction avec d'autres pseudo-sélecteurs.CSS:
HTML:
Prise En Charge Du Navigateur, etc.
:not
est un CSS3 sélecteur de niveau, la principale exception en termes de soutien, c'est qu'il est IE9+La spec est également un point intéressant:
:not(div) > div
serait de travailler uniquement avec des parents directs. Quels sont les autres grands-pères?code
éléments aussi longtemps qu'ils n'étaient pas à l'intérieur d'unpre
élément. Que:not(div) > div
extrait était exactement ce dont j'avais besoin, merci!Je pense que cela devrait fonctionner:
De "négative sélecteur css" répondre.
Comme à contribuer à ce que les réponses ci-dessus :ne pas() peut être très efficace dans les formes angulaires, plutôt que de créer des effets ou de réglage de l'affichage/DOM,
Assure que sur le chargement de votre page, les champs de saisie ne montre que les invalides (bordures rouges ou de fond, etc), s'ils ont l'ajout de données (c'est à dire n'est plus vierge) mais ne sont pas valides.
Exemple
//Opacité 0.6 tous "de la section", mais pas "de la section" nom de
Vous pouvez utiliser
:not(.class)
sélecteur comme mentionné avant.Si vous vous souciez de compatibilité d'Internet explorer, je vous recommande d'utiliser http://selectivizr.com/.
Mais n'oubliez pas de passer sous apache sinon vous ne verrez pas l'effet.
À l'aide de la
:not()
pseudo classe:Pour la sélection de tout, mais un certain élément (ou les éléments). Nous pouvons utiliser la
:not()
CSS pseudo classe. Le:not()
pseudo classe nécessite unCSS
sélecteur comme argument. Le sélecteur d'appliquer les styles pour tous les éléments sauf pour les éléments qui sont définis comme un argument.Exemples:
CSS:
HTML:
Nous pouvons déjà voir la puissance de cette pseudo classe, il nous permet de facilement régler nos sélecteurs par l'exclusion de certains éléments. En outre, cette pseudo classe augmente la spécificité de la sélection. Par exemple:
CSS:
HTML:
Comme les autres ont dit, il vous suffit de mettre :not(.de classe). Pour les sélecteurs CSS, je vous recommande de visiter ce lien, il a été très utile tout au long de mon voyage:
https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048
La négation de la pseudo classe est particulièrement utile. Disons que je veux sélectionner tous les divs, à l'exception de celui qui a un id de conteneur. L'extrait de code ci-dessus va gérer cette tâche à la perfection.
Ou, si je le voulais pour sélectionner chaque élément (pas conseillé), sauf pour les étiquettes de paragraphe, on pourrait faire: