CSS: Der :not() Selektor

Definition und Nutzung

Mit dem CSS :not()-Selektor lassen sich gezielt Elemente von einer CSS-Regel ausschließen. Die Syntax ist sehr einfach:

:not(.class) {
  property: value;
}

So kann man beispielsweise Elemente, die eine spezielle Klasse haben, von einer Anweisung ausschließen:

<article>
  <p>Lorem Ipsum</p>
  <p class="different">Lorem Ipsum</p>
  <p>Lorem Ipsum</p>
</article>
p:not(.different) {
  font-size: 2em;
}

Diese Anweisung betrifft folglich nur den ersten und den letzten Paragraphen.

Anwendungsbeispiel

Ich habe oft den Fall, dass ich mehrere Paragraphen in einer Box habe, die alle einen margin-bottom bekommen sollen, außer dem letzten Element. Früher bin ich immer wie folgt vorgegangen:

.article p {
    margin-bottom: 20px;
}

Zuerst weist man allen Paragraphen den margin zu, bevor man ihn dann über die Pseudoklasse :last-child wieder cancelt. Die Alternative wäre noch, dass man dem letzten Element direkt im Markup die Klasse last mitgibt:

.article p:last-child {
    margin-bottom: 0;
}

Und genau das kann man mit dem :not-Selektor vereinfachen:

.article p:not(:last-child) {
    margin-bottom: 20px;
}

Hiermit wird der margin ausschließlich allen Paragraphen gegeben, die nicht das :last-child sind.

Ergebnis als CodePen:

(codepen: http://codepen.io/czehnter/pen/zoqmVY)