Ich möchte eine CSS-Auswahlregel schreiben, die alle Elemente auswählt, die keine bestimmte Klasse haben. Zum Beispiel mit folgendem HTML:
<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>
Ich möchte einen Selektor schreiben, der alle Elemente auswählt, die nicht die "druckbare" Klasse haben, in diesem Fall das Navi und ein Element.
Ist das möglich?
HINWEIS: In dem tatsächlichen HTML-Code, in dem ich dies verwenden möchte, wird es viel mehr Elemente geben, die nicht über die "druckbare" Klasse verfügen als dies der Fall ist (im obigen Beispiel ist es umgekehrt).
quelle
:not()
auf dem Bildschirm keine Unterstützung bietet, wird er auch im Druck nicht unterstützt.:not()
nur ein einfacher Selektor benötigt wird, was bedeutet, dass er keine verschachtelten Selektoren enthalten kann, wie:not(div .printable)
- siehe W3C-Selektorsyntax:not(.active)
Regel wurden möglicherweise einfach durch Eigenschaften in Regeln mit höherer Priorität überschrieben.:not()
ist die seines Arguments, was bedeutet, dass:not(div)
es fürdiv
,:not(.cls)
für.cls
und:not(#id)
für gleichermaßen spezifisch ist#id
.Tatsächlich wird dadurch alles ausgewählt, auf das keine CSS-Klasse (
class="css-selector"
) angewendet wurde.Ich habe eine jsfiddle- Demo gemacht
Wird das unterstützt? Ja: Caniuse.com (abgerufen am 02. Januar 2020) :
Lustige Bearbeitung, ich googelte für das Gegenteil von: nicht. CSS-Negation?
quelle
Die
:not
NegationspseudoklasseSie können verwenden
:not
, um eine Teilmenge übereinstimmender Elemente auszuschließen, die wie normale CSS-Selektoren angeordnet sind.Einfaches Beispiel: Ausschluss nach Klasse
div:not(.class)
Würde alle
div
Elemente ohne die Klasse auswählen.class
Komplexes Beispiel: Ausschluss nach Typ / Hierarchie
:not(div) > div
Würde alle
div
Elemente auswählen , die keine Kinder eines anderen sinddiv
Komplexes Beispiel: Verkettung von Pseudo-Selektoren
Mit der bemerkenswerten Ausnahme, dass
:not
Selektoren und Pseudoelemente nicht verkettet / verschachtelt werden können, können Sie sie in Verbindung mit anderen Pseudoselektoren verwenden.Browser-Unterstützung usw.
:not
ist ein CSS3-Level-Selektor . Die Hauptausnahme in Bezug auf die Unterstützung ist, dass es sich um IE9 + handeltDie Spezifikation macht auch einen interessanten Punkt:
quelle
:not(div) > div
würde nur mit direkten Eltern funktionieren. Was ist mit anderen Großvätern?Ich denke das sollte funktionieren:
Von "negativer CSS-Selektor" Antwort .
quelle
Ich möchte nur dazu beitragen, dass die obigen Antworten von: not () in eckigen Formen sehr effektiv sein können, anstatt Effekte zu erzeugen oder die Ansicht / das DOM anzupassen.
Stellt sicher, dass beim Laden Ihrer Seite in den Eingabefeldern nur ungültige (rote Ränder oder Hintergründe usw.) angezeigt werden, wenn Daten hinzugefügt wurden (dh nicht mehr makellos sind), die jedoch ungültig sind.
quelle
Beispiel
// Deckkraft 0,6 alle "Abschnitts-" aber nicht "Abschnittsname"
quelle
Sie können den
:not(.class)
Selektor wie oben erwähnt verwenden.Wenn Sie sich für die Kompatibilität mit dem Internet Explorer interessieren, empfehlen wir Ihnen, http://selectivizr.com/ zu verwenden .
Aber denken Sie daran, es unter Apache auszuführen, sonst sehen Sie den Effekt nicht.
quelle
Verwenden der
:not()
Pseudoklasse:Zum Auswählen von allem außer einem bestimmten Element (oder Elementen). Wir können die
:not()
CSS-Pseudoklasse verwenden . Die:not()
Pseudoklasse benötigt einenCSS
Selektor als Argument. Der Selektor wendet die Stile auf alle Elemente mit Ausnahme der Elemente an, die als Argument angegeben sind.Beispiele:
Wir können bereits die Leistungsfähigkeit dieser Pseudoklasse erkennen. Sie ermöglicht es uns, unsere Selektoren bequem zu optimieren, indem bestimmte Elemente ausgeschlossen werden. Darüber hinaus erhöht diese Pseudoklasse die Spezifität des Selektors . Zum Beispiel:
quelle
Wenn Sie eine bestimmte Klasse wollen Menü eine bestimmte CSS haben , wenn fehlende Klasse angemeldet in :
quelle
Wie andere sagten, sagen Sie einfach: nicht (.class). Für CSS-Selektoren empfehle ich den Besuch dieses Links. Er war während meiner gesamten Reise sehr hilfreich: https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048
Die Negationspseudoklasse ist besonders hilfreich. Angenommen, ich möchte alle Divs auswählen, mit Ausnahme derjenigen, die die ID eines Containers hat. Das obige Snippet wird diese Aufgabe perfekt erledigen.
Oder wenn ich jedes einzelne Element (nicht empfohlen) außer Absatz-Tags auswählen wollte, könnten wir Folgendes tun:
quelle