Eu gostaria de escrever uma regra de seletor de CSS que selecione todos os elementos que não têm uma determinada classe. Por exemplo, dado o seguinte 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>
Eu gostaria de escrever um seletor que selecione todos os elementos que não possuem a classe "imprimível" que, nesse caso, são os elementos nav e a .
Isso é possível?
NOTA: no HTML em que eu gostaria de usar isso, haverá muito mais elementos que não possuem a classe "printable" do que a que eu tenho (percebo que é o contrário no exemplo acima).
fonte
:not()
na tela, ele também não será impresso.:not()
só tem um seletor simples que significa que ele não pode conter seletores aninhados como:not(div .printable)
- ver W3C Selector sintaxe:not(.active)
regra podem ter sido substituídas por propriedades em regra (s) com prioridade mais alta.:not()
é a de seu argumento, o que significa que:not(div)
é igualmente específico paradiv
,:not(.cls)
para.cls
e:not(#id)
para#id
.Na verdade, isso selecionará qualquer coisa que não tenha uma classe css (
class="css-selector"
) aplicada a ele.Eu fiz uma demonstração do jsfiddle
Isso é suportado? Sim: Caniuse.com (acessado em 02 jan 2020) :
Edição engraçada, eu estava pesquisando no Google pelo contrário: não. Negação de CSS?
fonte
A
:not
pseudo classe de negaçãoVocê pode usar
:not
para excluir qualquer subconjunto de elementos correspondentes, ordenados como faria com seletores CSS normais.Exemplo simples: excluindo por classe
div:not(.class)
Selecionaria todos os
div
elementos sem a classe.class
Exemplo complexo: excluindo por tipo / hierarquia
:not(div) > div
Selecionaria todos os
div
elementos que não são filhos de outrodiv
Exemplo complexo: encadeando pseudo-seletores
Com a exceção notável de não poder encadear / aninhar
:not
seletores e pseudo elementos, você pode usar em conjunto com outros pseudo seletores.Suporte ao navegador , etc.
:not
é um seletor de nível CSS3 , a principal exceção em termos de suporte é que é o IE9 +A especificação também faz um ponto interessante:
fonte
:not(div) > div
funcionaria apenas com pais diretos. E os outros avós?Eu acho que isso deve funcionar:
Da resposta "seletor de css negativo" .
fonte
Gostaria de contribuir para que as respostas acima de: not () possam ser muito eficazes em formas angulares, em vez de criar efeitos ou ajustar a visualização / DOM,
Garante que, ao carregar sua página, os campos de entrada mostrem apenas os inválidos (bordas vermelhas ou planos de fundo, etc.) se eles tiverem dados adicionados (ou seja, não estiverem mais limpos), mas forem inválidos.
fonte
Exemplo
// Opacidade 0,6 tudo "seção-", mas não "nome da seção"
fonte
Você pode usar o
:not(.class)
seletor como mencionado anteriormente.Se você se preocupa com a compatibilidade do Internet Explorer, recomendo que você use http://selectivizr.com/ .
Mas lembre-se de executá-lo no apache, caso contrário você não verá o efeito.
fonte
Usando a
:not()
pseudo classe:Para selecionar tudo, exceto um determinado elemento (ou elementos). Podemos usar a
:not()
pseudo classe CSS . A:not()
pseudo classe requer umCSS
seletor como argumento. O seletor aplicará os estilos a todos os elementos, exceto os elementos especificados como argumento.Exemplos:
Já podemos ver o poder dessa pseudo classe, ela nos permite ajustar convenientemente nossos seletores, excluindo certos elementos. Além disso, essa pseudo classe aumenta a especificidade do seletor . Por exemplo:
fonte
Se você deseja que um menu de classe específico tenha um CSS específico, se estiver faltando o logon da classe :
fonte
Como outros disseram, você simplesmente coloca: not (.class). Para seletores CSS, eu recomendo visitar este link, foi muito útil ao longo da minha jornada: https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048
A pseudo classe de negação é particularmente útil. Digamos que eu queira selecionar todas as divs, exceto a que possui um ID de container. O snippet acima irá lidar com essa tarefa perfeitamente.
Ou, se eu quisesse selecionar todos os elementos (não recomendados), exceto as tags de parágrafo, poderíamos fazer:
fonte