Em um cabeçalho HTML, eu tenho o seguinte:
<head>
<title>Title</title>
<link href="styles.css" rel="stylesheet" type="text/css"/>
<link href="master.css" rel="stylesheet" type="text/css"/>
styles.css
é minha planilha específica da página. master.css
é uma planilha que uso em cada um dos meus projetos para substituir os padrões do navegador. Qual dessas folhas de estilo tem prioridade? Exemplo: primeira folha contém informações específicas
body { margin:10px; }
E fronteiras associadas, mas o segundo contém minhas redefinições de
html, body:not(input="button") {
margin: 0px;
padding: 0px;
border: 0px;
}
Em essência, o elemento em cascata do CSS funciona da mesma forma em termos de referências à folha de estilo e nas funções CSS típicas? Significando que a última linha é a exibida?
css
overriding
stylesheet
ian5v
fonte
fonte
body:not(input="button")
A propósito, não é um seletor válido. Você provavelmente quis dividir issobody, input:not([type="button"])
.master.css
deve carregar primeiro e é muito mais fácil substituir os estilos principais no seustyles.css
.Respostas:
As regras para cascata de regras CSS são complexas - em vez de tentar parafrasear mal, eu simplesmente o encaminhei para a especificação:
http://www.w3.org/TR/2011/REC-CSS2-20110607/cascade.html#cascade
Em resumo: regras mais específicas substituem as mais gerais. A especificidade é definida com base em quantos IDs, classes e nomes de elementos estão envolvidos, bem como se a
!important
declaração foi usada. Quando existirem várias regras do mesmo "nível de especificidade", a que aparecer por último vence.fonte
!important
participa diretamente da cascata e não tem nada a ver com especificidade. A especificidade está relacionada aos seletores, enquanto que!important
é usada com declarações de propriedade. (Então você está certo em dizer que as regras são complexas;!)O estilo mais específico é aplicado:
Se todos os seletores tiverem a mesma especificidade, a decleração mais recente será usada:
No seu caso,
body:not([input="button"])
é mais específico, portanto, seus estilos são usados.fonte
Ordem importa. O último valor declarado de ocorrência múltipla será obtido. Por favor, veja o mesmo que eu elaborei : http://jsfiddle.net/Wtk67/
Se você trocar a ordem de
.test{}
, poderá ver que o HTML assume o valor do último declarado em CSSfonte
O último CSS carregado é O MESTRE, que substituirá todos os css com as mesmas configurações de css
Exemplo:
reset.css
master.css
A saída para a tag h1 será do tamanho da fonte: 30px;
fonte
.css
é carregado por último. Eles são aplicados na ordem em que são carregados ou na ordem em que são definidos?Vamos tentar simplificar a regra de cascata com um exemplo. As regras são mais específicas para gerais.
Aqui está o código css e html;
Aqui está o estilo css
Aqui está o resultado. Independentemente da ordem dos arquivos de estilo ou da declaração de estilo,
id="important"
aplica-se no final (observe oclass="deadline"
último declarado, mas não tem efeito).O
<article>
elemento contém<aside>
elemento, no entanto, o último estilo declarado entrará em vigor, neste casoarticle h2 { .. }
no terceiro elemento h2.Aqui está o resultado no IE11: (Direitos insuficientes para publicar uma imagem) DarkBlue: Houston Chronicle News, DarkGreen: Desenvolvimentos mais recentes em sua cidade, Purple: Houston Local Advertisement Section, Preto: Next section
fonte
Depende da ordem de carregamento e da especificidade das regras reais aplicadas a cada estilo. Dado o contexto da sua pergunta, você deseja carregar sua redefinição geral primeiro, depois a página específica. Então, se você ainda não está vendo o efeito pretendido, precisa analisar a especificidade dos seletores envolvidos, como outros já apontaram.
fonte
Sim, funciona da mesma forma como se estivessem em uma folha, no entanto:
Questões sobre pedidos de carga!
No código acima, não há garantia de que
master.css
será carregado depoisstyles.css
. Portanto, semaster.css
for carregado rapidamente estyles.css
demorar um pouco,styles.css
se tornará a segunda folha de estilo e quaisquer regras com a mesma especificidademaster.css
serão substituídas.É melhor colocar todas as suas regras em uma única folha (e minificar) antes da implantação.
fonte
master.css
e deixando ostyles.css
carregamento completo. Então, eu deixomaster.css
carregar. O estilo "sobreposto"master.css
ainda é aplicado - e a renderização foi bloqueada até sermaster.css
carregada e analisada. Nota : Tenteirel=preload
emmaster.css' (no halting) and that apparently alters its _declaration_ order by hoisting it above
styles.css`.A melhor maneira é usar as classes o máximo possível. Evite os seletores de ID (#) de qualquer maneira. Quando você escreve seletores com apenas uma classe, a herança CSS é muito mais fácil de seguir.
Atualização: Leia mais sobre a especificidade do CSS neste artigo: https://css-tricks.com/specifics-on-css-specificity/
fonte
Suspeito da sua pergunta que você tem seleções duplicadas, um conjunto mestre, válido para todas as páginas e um conjunto mais específico que você deseja substituir os valores mestre de cada página individual. Se for esse o caso, seu pedido está correto. O mestre é carregado primeiro e as regras no arquivo subseqüente terão precedência (se forem idênticas ou tiverem o mesmo peso). Há uma descrição altamente recomendada de todas as regras neste site http://vanseodesign.com/css/css-specificity-inheritance-cascaade/ Quando iniciei o desenvolvimento do front end, esta página esclareceu muitas perguntas.
fonte
É a cascata que define a precedência das declarações. Eu posso recomendar a especificação oficial; essa parte é bem legível.
https://www.w3.org/TR/css-cascade-3/#cascading
A seguir, há um efeito na classificação, em ordem decrescente de prioridade.
Uma combinação de origem e importância:
Transition
declarações!important
!important
!important
style
atributoAnimation
declaraçõesstyle
atributoSe duas declarações têm a mesma origem e importância, a especificidade, ou seja , com que clareza o elemento é definido, entra em ação, calculando uma pontuação.
#x34y
).level
)li
):hover
) excluindo:not
Por exemplo, o seletor
main li + .red.red:not(:active) p > *
tem uma especificidade de 24.A ordem de aparência apenas desempenha um papel se duas definições tiverem a mesma origem, importância e especificidade. As definições posteriores precedem as definições anteriores no documento (incluindo importações).
fonte
Acredito que, ao executar o código, ele é lido de cima para baixo, o que significa que o último link CSS substituiria estilos semelhantes em qualquer folha de estilo acima dele.
Por exemplo, se você criou duas folhas de estilo
e em ambos, você define a cor de plano de fundo do corpo para duas cores diferentes - a cor do corpo em style2.css teria prioridade.
Você pode evitar a questão da prioridade de estilo usando
!IMPORTANT
dentro do estilo de classe que você gostaria de ter prioridade ou, possivelmente, reorganizando seu<link>
pedido.fonte