Existem diferentes maneiras de substituir as propriedades. Supondo que você tenha
.left { background: blue }
por exemplo, qualquer um dos seguintes o substituiria:
a.background-none { background: none; }
body .background-none { background: none; }
.background-none { background: none !important; }
Os dois primeiros “ganham” por especificidade do seletor; o terceiro vence por !important
, um instrumento contundente.
Você também pode organizar suas folhas de estilo para que, por exemplo, a regra
.background-none { background: none; }
ganha simplesmente por ordem, ou seja, por estar atrás de uma regra igualmente “poderosa”. Mas isso impõe restrições e exige que você seja cuidadoso em qualquer reorganização de folhas de estilo.
Todos esses são exemplos do CSS Cascade , um conceito crucial, mas amplamente mal compreendido. Ele define as regras exatas para resolver conflitos entre as regras da folha de estilo.
PS Eu usei left
e background-none
como eles foram usados na pergunta. Eles são exemplos de nomes de classes que não devem ser usados, pois refletem renderizações específicas e não funções estruturais ou semânticas.
left
e devebackground-none
ser evitado?button
,name-label
, etc.). Outros acham que CSS torna-se incontrolável, se você usar essa abordagem e você deve usar "utilitário de primeira" ou css "funcional" onde as aulas correspondem a valores de propriedade (por exemplomargin-top-4
,width-10
, etc.). Historicamente, a abordagem "semântica" tem sido dominante, enquanto recentemente a abordagem "funcional" vem ganhando adeptos. Experimente ambos em um projeto de tamanho médio e decida por si mesmo o que é superior.Basta usá-
!important
lo ajudará a substituirEmbora seja considerada uma prática ruim,
!important
pode ser útil para classes de utilitários, você só precisa usá-lo com responsabilidade, verifique isto: Ao usar o importante é a escolha certafonte
Como alternativa à
important
palavra - chave, você pode tornar o seletor mais específico, por exemplo:(Nota: nenhum espaço entre os nomes das classes).
Nesse caso, a regra será aplicada quando ambos
.left
e.background-none
estiverem listados no atributo de classe (independentemente da ordem ou proximidade).fonte
Você deve substituir aumentando a especificidade de seu estilo. Existem diferentes maneiras de aumentar a Especificidade. O uso de
!important
especificidade de efeitos é uma prática ruim porque quebra a cascata natural em sua folha de estilo.O diagrama a seguir retirado de css-tricks.com o ajudará a produzir a especificidade certa para o seu elemento com base em uma estrutura de pontos. Qualquer especificidade que tiver pontos mais altos, vencerá. Parece um jogo - não é?
Confira exemplos de cálculos aqui em css-tricks.com . Isso ajudará você a entender o conceito muito bem e levará apenas 2 minutos.
Se você gosta de produzir e / ou comparar diferentes especificidades por si mesmo, tente esta Calculadora de Especificidade: https://specificity.keegan.st/ ou você pode usar apenas papel / lápis tradicional.
Para ler mais, experimente o MDN Web Docs .
Tudo de bom por não usar
!important
.fonte
Se você listar a
bakground-none
classe após as outras classes, suas propriedades substituirão as já definidas. Não há necessidade de usar!important
aqui.Por exemplo:
e
O link não terá um fundo vermelho. Observe que isso só substitui as propriedades que têm um seletor que é menos ou igualmente específico.
fonte
LIFO é a forma como o navegador analisa as propriedades CSS. Se você estiver usando Sass, declare uma variável chamada como
use-o em vez de atribuir valores diretamente como vermelho ou azul. Quando você quiser substituir, basta reatribuir o valor para
então
ele deve substituir suavemente. Usar "! Important" nem sempre é a escolha certa ... É apenas um hotfix
fonte