Pular para o conteúdo

A primeira escola especializada em tecnologia do Alto Solimões, com corpo técnico formado na área.

Módulo 1: A folha e os valores do portfólio

Seletores e a cascata

Escolher o que estilizar, e quem vence quando duas regras brigam

Escolher o alvo

/* Toda tag desse tipo */
p {
color: #a1a9b8;
}

/* Todo elemento com class="selo" */
.selo {
text-transform: uppercase;
letter-spacing: 0.14em;
}

/* O elemento com id="conteudo" */
#conteudo {
padding-top: 80px;
}
<p>Parágrafo comum.</p>
<p class="selo">Disponível para projetos</p>
<main id="conteudo">...</main>
SeletorEscreve-seReusa?
tagpsim, em todas
classe.selosim, quantas quiser
id#conteudonão: único na página

Os nomes de classe do portfólio

Este curso usa um punhado de classes, e vale conhecer as principais agora, porque as próximas doze aulas as preenchem:

ClasseO que éEntra na aula
.envelopeo invólucro que centraliza e limita a largura4
.prosao bloco de texto com largura de leitura4
.cartaoo cartão de projeto, de área, de cargo4
.etiquetaa marquinha de tecnologia4
.aberturao topo da página inicial5
.seloo rótulo pequeno em maiúsculas5
.apenas-leitoro que só o leitor de tela recebe6
.pularo link "pular para o conteúdo"6
.acaoo botão principal6
.gradea grade que se acomoda sozinha8
.situacaoo selo de "no ar" no canto do cartão10

São onze nomes, e todos dizem o papel da coisa. Nenhum diz a cor, o tamanho ou onde ela fica: esses três mudam, e um nome que os descreve mente na primeira troca.

Combinando

/* Todo <a> dentro de um <nav> */
nav a {
text-decoration: none;
}

/* Só o <a> filho direto do <li> */
li > a {
font-weight: 600;
}

/* Dois seletores, o mesmo estilo */
h1,
h2,
h3 {
letter-spacing: -0.02em;
}

/* Elemento que tem as duas classes */
.cartao.destaque {
border-color: #6ee7a5;
}

Um caso do portfólio: .cartao a pega todos os links dentro de um cartão - inclusive os que vierem dentro da descrição. Se você quer só o link de "abrir o projeto", dê classe a ele, ou use .cartao > footer > a. A regra mais curta que acerta o alvo, e nenhuma letra a mais.

Estado e posição

nav a:hover {
color: #6ee7a5;
}

a:focus-visible {
outline: 2px solid #6ee7a5;
outline-offset: 2px;
}

.grade > li:first-child {
border-color: #6ee7a5;
}

tbody tr:nth-child(even) {
background-color: #161b22;
}

O último é o zebrado da sua tabela de stack: uma linha de CSS que faz uma tabela de oito linhas ser lida sem o dedo na tela.

:focus-visible merece atenção: é o contorno que aparece quando a pessoa navega por teclado. Nunca apague com outline: none sem colocar outra coisa no lugar; sem ele, quem usa Tab perde a posição na página - e a aula 11 do curso de HTML pediu justamente isso.

Herança

Algumas propriedades descem para os filhos sozinhas:

body {
font-family: system-ui, sans-serif;
color: #fbfbfb;
line-height: 1.6;
}

Todo texto da página herda as três. Cor, fonte e altura de linha se herdam; margem, borda e fundo, não.

É por isso que a folha do portfólio começa pelo body: uma regra lá economiza vinte espalhadas.

Quem vence a briga

Quando duas regras atingem o mesmo elemento, o navegador decide nesta ordem:

  1. !important: vence tudo. Evite.
  2. style na tag: vence a folha de estilo.
  3. Especificidade: id vale mais que classe, que vale mais que tag.
  4. Ordem: empatado o resto, vence a última escrita.
p {
color: #a1a9b8;
}
.selo {
color: #6ee7a5;
} /* ganha de p */
#conteudo p {
color: #fbfbfb;
} /* ganha de .selo */

Quando algo não muda

Roteiro de três passos, em ordem:

  1. O seletor acerta o elemento? Abra as ferramentas do navegador (F12), clique no elemento e veja as regras aplicadas.
  2. Outra regra está vencendo? As ferramentas mostram riscada a que perdeu.
  3. A propriedade existe e o valor é válido? Erro de digitação é silencioso.

Um quarto suspeito, só de portfólio: você editou a folha e o navegador serviu a antiga do cache. Recarregue com Ctrl+Shift+R.

No portfólio

Hoje a folha ganha as primeiras regras que enxergam a estrutura do site:

  • nav a { text-decoration: none; } para tirar o sublinhado do menu - e só do menu: os links dentro do texto continuam sublinhados, porque é assim que se sabe que são links;
  • a:focus-visible com contorno bem visível, aplicado a tudo;
  • tbody tr:nth-child(even) na tabela de stack;
  • as classes .selo, .cartao e .envelope escritas no HTML das seis páginas, ainda sem estilo nenhum - elas ganham corpo nas próximas aulas.

Exercícios

  1. Escreva as oito classes da tabela desta aula no HTML das seis páginas, sem nenhuma regra ainda.
  2. Estilize só os links de dentro do <nav>, sem afetar os do texto.
  3. Pinte as linhas pares da sua tabela de stack com :nth-child(even).
  4. Escreva duas regras que brigam pelo mesmo elemento e descubra qual vence. Depois inverta a ordem delas no arquivo.
  5. Adicione :focus-visible bem visível em todos os links e navegue o portfólio inteiro com Tab.
  6. Procure na sua folha algum nome de classe que descreva aparência. Renomeie pelo papel.

Referências

Testa o que você leu

6 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.

Pergunta 1 de 6
Por que a folha do portfólio estiliza por classe e reserva o `id` para âncora e rótulo?