Chciałbym napisać regułę wyboru CSS, która wybiera wszystkie elementy, które nie mają określonej klasy. Na przykład biorąc pod uwagę następujący kod 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>
Chciałbym napisać selektor że wybiera wszystkie elementy, które nie mają „druku” klasy, które w tym przypadku są takie nav i A elementy.
czy to możliwe?
UWAGA: w rzeczywistym HTML, w którym chciałbym tego użyć, będzie o wiele więcej elementów, które nie mają klasy „do wydrukowania” niż w (zdaję sobie sprawę, że jest odwrotnie w powyższym przykładzie).
źródło
:not()
na ekranie, nie będzie też obsługiwać jej w wersji drukowanej.:not()
wymaga tylko prostego selektora, co oznacza, że nie może zawierać zagnieżdżonych selektorów, takich jak:not(div .printable)
- patrz składnia selektora W3C:not(.active)
regule mogły zostać po prostu zastąpione właściwościami w regułach o wyższym priorytecie.:not()
jest jej argumentu, czyli:not(div)
jest równie specyficznediv
,:not(.cls)
aby.cls
i:not(#id)
do#id
.W rzeczywistości spowoduje to zaznaczenie wszystkiego, co nie ma przypisanej klasy css (
class="css-selector"
).Zrobiłem jsfiddle demo
Czy to jest obsługiwane? Tak: Caniuse.com (dostęp 02 stycznia 2020) :
Zabawna edycja, byłem googlingiem w przeciwieństwie do: nie. Negacja CSS?
źródło
:not
Klasa negacja pseudoMożesz użyć,
:not
aby wykluczyć dowolny podzbiór dopasowanych elementów, uporządkowanych tak jak normalne selektory CSS.Prosty przykład: wykluczenie według klasy
div:not(.class)
Wybrałby wszystkie
div
elementy bez klasy.class
Złożony przykład: wykluczenie według typu / hierarchii
:not(div) > div
Wybierałby wszystkie
div
elementy, które nie są dziećmi innegodiv
Złożony przykład: łączenie pseudo selektorów
Z godnym uwagi wyjątkiem
:not
, że nie można łączyć / zagnieżdżać selektorów i pseudoelementów, możesz używać ich w połączeniu z innymi pseudo selektorami.Obsługa przeglądarki itp.
:not
jest selektorem poziomu CSS3 , głównym wyjątkiem w zakresie wsparcia jest to, że jest to IE9 +Specyfikacja zawiera również interesujący punkt:
źródło
:not(div) > div
działałby tylko z bezpośrednimi rodzicami. A co z innymi dziadkami?Myślę, że to powinno działać:
Od odpowiedzi „negatywny selektor css” .
źródło
Podobnie, aby przyczynić się do tego, że powyższe odpowiedzi: not () mogą być bardzo skuteczne w formach kątowych, zamiast tworzyć efekty lub dostosowywać widok / DOM,
Zapewnia, że podczas wczytywania strony w polach wejściowych będą widoczne nieprawidłowe (czerwone obramowania lub tła itp.) Tylko wtedy, gdy zostaną dodane dane (tj. Nie będą już nieskazitelne), ale będą nieprawidłowe.
źródło
Przykład
// Krycie 0.6 wszystkie „sekcja-”, ale nie „nazwa-sekcji”
źródło
Możesz użyć
:not(.class)
selektora, jak wspomniano wcześniej.Jeśli zależy Ci na kompatybilności przeglądarki Internet Explorer, zalecamy skorzystanie z http://selectivizr.com/ .
Pamiętaj jednak, aby uruchomić go pod Apache, inaczej nie zobaczysz efektu.
źródło
Za pomocą
:not()
pseudoklasy:Do wybierania wszystkiego oprócz określonego elementu (lub elementów). Możemy użyć
:not()
pseudoklasy CSS .:not()
Klasa pseudo wymagaCSS
selektora jako argument. Selektor zastosuje style do wszystkich elementów z wyjątkiem elementów określonych jako argument.Przykłady:
Widzimy już moc tej pseudoklasy, pozwala nam to dogodnie dostroić nasze selektory, wykluczając pewne elementy. Ponadto ta pseudoklasa zwiększa specyficzność selektora . Na przykład:
źródło
Jeśli chcesz, aby menu konkretnej klasy zawierało określony CSS, jeśli zalogowana klasa zaginęła :
źródło
Jak powiedzieli inni, po prostu dodajesz: nie (.klasa). W przypadku selektorów CSS polecam odwiedzenie tego linku, było to bardzo pomocne podczas mojej podróży: https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048
Pseudoklasa negacji jest szczególnie pomocna. Powiedzmy, że chcę wybrać wszystkie div, z wyjątkiem tej, która ma identyfikator kontenera. Powyższy fragment doskonale poradzi sobie z tym zadaniem.
Lub jeśli chciałbym wybrać każdy pojedynczy element (nie zalecane) oprócz tagów akapitowych, moglibyśmy zrobić:
źródło