Skip to content
This page has been auto-translated and may contain errors.View in English

O que é CSS ​

docs.scrimba.com

Abra qualquer site bem feito, remova seu CSS, e você fica com uma longa coluna de texto preto em fundo branco: todo cabeçalho, todo parágrafo, todo link, empilhados em ordem e completamente sem estilo. Essa coluna simples é seu HTML. Tudo o que torna a página com aparência de design, as cores, o espaçamento, as fontes, as colunas e cartões e barras de navegação, é CSS. Este capítulo é sobre o que essa segunda linguagem é e como ela funciona junto à primeira.

Uma página antes e depois do CSS ​

CSS significa Cascading Style Sheets (Folhas de Estilo em Cascata). A parte importante é style (estilo): CSS é como você descreve a aparência de uma página. Seu HTML diz "isto é um cabeçalho, isto é um parágrafo, isto é um botão". CSS então diz "faça o cabeçalho grande e azul escuro, dê ao botão algum preenchimento e uma borda arredondada".

Pense no HTML como o conteúdo de uma sala, os móveis e onde estão, e CSS como a pintura, a iluminação e a organização. Mesma sala, mas uma está vazia e outra é um lugar onde você gostaria de estar. Você escreve CSS em regras separadas que apontam para partes do seu HTML e mudam como elas parecem.

CSS é a camada de apresentação de uma página web. HTML fornece estrutura e significado; CSS lê essa estrutura e descreve como ela deve ser renderizada: cor, tipografia, espaçamento, tamanho e layout. Os dois foram projetados para serem escritos separadamente, para que o mesmo HTML possa ser completamente resestilizado trocando o CSS, e uma única folha de estilos pode estilizar mil páginas de uma vez.

Essa separação é o objetivo. Quando seu conteúdo vive em HTML e sua apresentação vive em CSS, você pode redesenhar um site sem tocar sua marcação, e pode mudar uma folha de estilos compartilhada em vez de editar cada página. Manter os dois apartados é um hábito que vale a pena construir desde sua primeira regra.

CSS é a camada de apresentação, e o navegador a aplica como um estágio distinto de renderização: analisa seu HTML no DOM (o Document Object Model, a árvore de elementos viva que o navegador constrói a partir de sua marcação), analisa seu CSS em um conjunto de regras, depois compara regras com elementos para calcular um estilo final para cada um. Seu CSS nunca muda a árvore do DOM; ele a decora.

Esse modelo em estágios é por que a separação de responsabilidades se mantém na prática, não apenas em princípio. Uma página cujo significado vive inteiramente em seu HTML se degrada graciosamente: se o CSS falhar ao carregar, o conteúdo ainda está lá e ainda ordenado, porque estrutura e apresentação nunca foram entrelaçadas. É também por que a mesma marcação pode ter um tema claro e um tema escuro, ou um layout de impressão e um layout de tela, sem nenhuma mudança no HTML. Apresentação é uma camada que você anexa, não uma propriedade incorporada ao conteúdo.

css
h1 {
  color: navy;
  font-size: 2rem;
}

Essa é uma única regra de CSS. Ela encontra cada cabeçalho <h1> na página e o torna azul marinho e maior. O HTML permanece exatamente como estava; apenas sua aparência muda.

JunoUma página antes e depois do CSS HTML é o conteúdo, CSS é a aparência. Você escreve regras que apontam para partes de sua página e mudam como elas aparecem, como fazer um cabeçalho grande e azul. A página subjacente não muda, apenas a forma como é mostrada. Essa separação é a ideia toda.
JunoUma página antes e depois do CSS CSS é apresentação, HTML é estrutura, e eles são mantidos separados propositalmente. Resestilize o CSS e a mesma marcação fica completamente diferente; compartilhe uma folha de estilos e ela estiliza cada página. Construa o hábito de manter conteúdo e aparência separados desde sua primeira regra.
JunoUma página antes e depois do CSS O navegador analisa HTML no DOM, analisa CSS em regras, depois calcula um estilo para cada elemento: seu CSS decora a árvore, nunca a reescreve. Esse modelo em estágios é por que uma página com seu significado no HTML ainda funciona quando o CSS falha ao carregar. Apresentação é uma camada que você anexa, não algo incorporado ao conteúdo.

Como CSS aponta para seu HTML ​

CSS só se torna útil quando pode encontrar as partes certas de sua página. Ele faz isso com um seletor: a parte no início de uma regra que nomeia o que estilizar. Na regra acima, h1 é o seletor, e significa "todo cabeçalho h1".

Você geralmente alvo elementos dando a eles uma class em seu HTML e apontando para essa classe do CSS. Uma classe é um rótulo que você escolhe:

html
<button class="buy-button">Comprar agora</button>
css
.buy-button {
  background-color: teal;
  color: white;
}

O seletor .buy-button encontra o elemento com essa classe e o estiliza. Você encontrará muitos tipos de seletor depois; classes são os que você mais usará.

Uma regra de CSS tem duas partes: um seletor que diz quais elementos combinar, e um bloco de declarações que diz como estilizá-los. Seletores são como CSS alcança o DOM e escolhe elementos para aplicar estilos. Você pode selecionar por tipo de elemento (h1), por classe (.buy-button), por id, por relacionamento, e mais.

html
<button class="buy-button">Comprar agora</button>
css
.buy-button {
  background-color: teal;
  color: white;
}

Na prática você estiliza com classes muito mais do que com tipos de elemento ou ids, porque uma classe é reutilizável e não carrega bagagem de especificidade incorporada. O capítulo seletores cobre a gama completa e quando cada um é a ferramenta certa.

Seletores são a linguagem de consulta do CSS: cada um é um padrão que o navegador testa cada elemento para decidir quais regras se aplicam. Essa correspondência não é gratuita, e ela interage com especificidade (o peso que o navegador atribui a um seletor para quebrar empates quando várias regras definem a mesma propriedade no mesmo elemento). Uma classe pesa mais do que um tipo de elemento; um id pesa mais do que uma classe; estilos inline pesam ainda mais.

css
.buy-button {
  background-color: teal;
  color: white;
}

A consequência prática é que como você seleciona é uma decisão de design, não apenas uma de direcionamento. Selecionar tudo com ids e seletores profundamente aninhados acumula especificidade que regras posteriores dificilmente conseguem sobrescrever, que é como as folhas de estilos se calcificam. Seletores simples baseados em classe mantêm a especificidade baixa e previsível, que é por que quase toda abordagem CSS escalável é construída em classes. O capítulo seletores desmancha a especificidade adequadamente.

JunoComo CSS aponta para seu HTML Um seletor é a parte de uma regra que diz o que estilizar. O mais amigável para começar é uma classe: você coloca class="nome" em um elemento em seu HTML, depois estiliza .nome em seu CSS. Não se preocupe com os outros tipos ainda, classes o levarão longe.
JunoComo CSS aponta para seu HTML Cada regra começa com um seletor que combina elementos no DOM, e você pode combinar por tipo, classe, id, ou relacionamento. Recorra a classes por padrão: elas são reutilizáveis e mantêm a especificidade gerenciável. O capítulo de seletores tem o kit completo.
JunoComo CSS aponta para seu HTML Seletores são uma linguagem de consulta, e cada um carrega um peso de especificidade que decide quem vence quando regras colidem: id sobre classe, classe sobre tipo, inline sobre tudo. Como você seleciona é uma decisão de manutenibilidade, então mantenha-a simples e baseada em classe para evitar que a especificidade calcifique sua folha de estilos. A especificidade recebe o tratamento completo no capítulo de seletores.

O que "cascata" significa ​

A primeira palavra em Cascading Style Sheets é a que as pessoas pulam, mas explica muito. Mais de uma regra pode se aplicar ao mesmo elemento, e elas podem discordar. Talvez uma regra diga que parágrafos são cinza e outra diga que este parágrafo em particular é preto. A cascata é o conjunto de regras que o navegador usa para decidir qual vence.

Na maioria das vezes se resume a uma coisa: se duas regras são igualmente específicas, a escrita depois vence. Você não precisa da imagem completa ainda. Saiba que quando um estilo não aparece da forma que você espera, geralmente é porque outra regra o venceu, não porque CSS está quebrado.

A cascata é o algoritmo que resolve conflitos quando várias regras direcionam o mesmo elemento e definem a mesma propriedade. Ela pesa algumas coisas em ordem: de onde a regra veio, o quão específico é seu seletor, e, como um desempate final, ordem de fonte (o mais recente vence). Quando duas regras são igualmente específicas, a última declarada vence.

Este é o mecanismo por trás de a maioria dos momentos "por que meu CSS não está funcionando". O estilo é aplicado; está sendo sobrescrito por uma regra que se classifica mais alto. Ler a cascata corretamente, em vez de acumular mais regras para forçar uma mudança, é um dos hábitos que separa lutar com CSS de dirigi-lo. O capítulo como CSS funciona caminha pela ordem completa de resolução.

A cascata é o algoritmo de resolução de conflitos do CSS, e conhecer sua ordem transforma a maioria dos bugs de estilo de mistérios em pesquisas. Ela resolve declarações concorrentes por, em ordem: origem e importância (estilos do autor versus padrões do navegador versus !important), depois especificidade (o peso do seletor), depois ordem de fonte (a regra posterior vence o desempate final).

A razão disso importar em escala de produção é que cada sobrescrita que você escreve é um movimento nessa classificação. Recorrer a !important ou um id para vencer um conflito eleva a barra para cada regra futura que precisa tocar o mesmo elemento, e essas escalações se compõem em uma folha de estilos que ninguém pode mudar com segurança. A correção durável é quase sempre baixar a especificidade em outro lugar, não elevá-la aqui. CSS moderno adiciona ferramentas que lhe dão controle de cascata sem a corrida de especificidade, como camadas de cascata, que o capítulo organizando e escalando CSS cobre. Para a ordem completa de resolução, veja como CSS funciona.

JunoO que cascata significa Cascata significa que mais de uma regra pode atingir o mesmo elemento, e a cascata decide qual vence. A versão cotidiana: quando duas regras são igualmente específicas, a mais recente vence. Então se um estilo não está aparecendo, outra regra provavelmente o venceu. Levei um tempo para parar de achar isso misterioso.
JunoO que cascata significa A cascata resolve conflitos por origem, depois especificidade, depois ordem de fonte, com a regra mais recente vencendo um desempate igual. A maioria dos momentos "meu CSS não está funcionando" é uma sobrescrita, não um bug. Aprenda a ler por que uma regra perdeu em vez de empilhar mais regras para forçá-la, e CSS para de parecer uma luta.
JunoO que cascata significa Conflitos são resolvidos por origem e importância, depois especificidade, depois ordem de fonte. Cada sobrescrita que você escreve é um movimento nessa classificação, então vencer com !important ou um id eleva a barra para cada regra depois dela. A correção durável é baixar a especificidade em outro lugar, não elevá-la aqui. Camadas de cascata lhe dão controle sem a corrida armamentista.

Para onde CSS vai daqui ​

CSS é uma linguagem pequena em seu núcleo, um seletor e alguns pares de propriedade-valor, mas alcança muito longe. Uma vez que você pode direcionar elementos e definir propriedades, o resto deste manual é sobre as propriedades que valem a pena conhecer e os sistemas construídos sobre elas: o box model que controla espaçamento e tamanho, depois cor e tipo, e depois as ferramentas de layout, flexbox e grid, que organizam uma página inteira.

O próximo capítulo, como CSS funciona, fica concreto sobre a mecânica que este introduziu: as três formas de anexar CSS a uma página, a anatomia exata de uma regra, e como a cascata e herança decidem como cada elemento finalmente se parece.