Wenn Sie SASS in Ihrem Projekt verwenden, habe ich dieses Mixin erstellt, damit es so funktioniert, wie wir es alle wollen:
@mixin not($ignorList...) {
//if only a single value given
@if (length($ignorList) == 1){
//it is probably a list variable so set ignore list to the variable
$ignorList: nth($ignorList,1);
}
//set up an empty $notOutput variable
$notOutput: '';
//for each item in the list
@each $not in $ignorList {
//generate a :not([ignored_item]) segment for each item in the ignore list and put them back to back
$notOutput: $notOutput + ':not(#{$not})';
}
//output the full :not() rule including all ignored items
&#{$notOutput} {
@content;
}
}
Es kann auf 2 Arten verwendet werden:
Option 1: Auflistung der ignorierten Elemente inline
input {
/*non-ignored styling goes here*/
@include not('[type="radio"]','[type="checkbox"]'){
/*ignored styling goes here*/
}
}
Option 2: zuerst die ignorierten Elemente in einer Variablen auflisten
$ignoredItems:
'[type="radio"]',
'[type="checkbox"]'
;
input {
/*non-ignored styling goes here*/
@include not($ignoredItems){
/*ignored styling goes here*/
}
}
Ausgegebenes CSS für beide Optionen
input {
/*non-ignored styling goes here*/
}
input:not([type="radio"]):not([type="checkbox"]) {
/*ignored styling goes here*/
}
25 Stimmen
"Viele Leute haben gezeigt, dass man mehrere Argumente in :not einfügen kann." Entweder haben diese Leute einen bestimmten Artikel zitiert, auf den häufig verwiesen wird, der aber schwer irreführend ist, oder sie haben über jQuery und nicht über CSS gesprochen. Beachten Sie, dass der angegebene Selektor tatsächlich in jQuery gültig ist, aber nicht in CSS. Ich habe ein Q&A geschrieben, in dem die Unterschiede beschrieben werden: stackoverflow.com/questions/10711730/ (in der Antwort wird dieser Artikel auch am Rande erwähnt)
13 Stimmen
Herzlichen Glückwunsch! Sie haben erfolgreich gültiges CSS4.0 in Ihrem obigen Beispiel geschrieben, 2 Jahre bevor die offizielle Ausgabe herauskam.
2 Stimmen
@Jack Giffin: Auf welche "offizielle Ausgabe" beziehen Sie sich? Diese Frage ist nur 5 Monate älter als die FPWD von selectors-4, und die Spezifikation ist noch lange nicht fertig: w3.org/TR/2011/WD-selectors4-20110929/#negation Und sie ist älter als die erste Umsetzung durch 4 und ein halbes Jahr : stackoverflow.com/questions/35993727/
0 Stimmen
Laut MDN wird der :not()-Selektor mit mehreren Argumenten derzeit in FF84 und Safari9 unterstützt: developer.mozilla.org/de-US/docs/Web/CSS/:not#specifications