Fundamentos de CSS

Aprenda a estilizar páginas web com CSS. Escreva regras e vincule uma folha de estilo, use os estilos padrão do navegador como ponto de partida e selecione exatamente os elementos que você quer. Preveja qual estilo prevalece quando há conflito entre regras, usando a cascata, a especificidade e a herança. Especifique cores e escolha unidades, dimensione e espace elementos com o modelo de caixa e estilize fontes, textos, listas, links, fundos e bordas.

BásicoAula 4 de 8 do curso Curso de Noções básicas de desenvolvimento web

O que você vai aprender

  1. Escreva regras CSS válidas, vincule uma folha de estilo a uma página HTML e use os estilos que o navegador já aplica como ponto de partida, usando as ferramentas do desenvolvedor para entender o que acontece.
    • Escreva regras CSS e vincule uma folha de estilo a uma página
      Leia e escreva as partes de uma regra CSS, escolha entre uma folha de estilo externa, um elemento <style> e estilos em linha, e saiba o que o navegador faz quando encontra erros.
    • Use os estilos padrão do navegador como ponto de partida e inspecione-os
      Reconheça os estilos que cada navegador aplica antes dos seus, decida o que redefinir e use as ferramentas do desenvolvedor para descobrir por que um elemento tem determinada aparência.
  2. Selecione exatamente os elementos desejados com seletores de tipo, classe e ID, seletores de atributo, pseudoclasses, pseudoelementos e combinadores.
    • Selecione elementos por tipo, classe e ID
      Selecione elementos por nome, classe ou ID, combine seletores que devem corresponder ao mesmo elemento e agrupe vários seletores em uma regra.
    • Selecione por atributos, estados e partes dos elementos
      Use seletores de atributo, pseudoclasses para estados e posições e pseudoelementos que estilizam parte de um elemento ou adicionam conteúdo gerado.
    • Combine seletores de acordo com a posição dos elementos na página
      Selecione elementos por sua relação com outros elementos na árvore HTML: em qualquer nível dentro, diretamente dentro, imediatamente depois ou em algum ponto depois de outro elemento.
  3. Determine qual declaração se aplica quando várias regras definem a mesma propriedade, calcule a especificidade e explique como os elementos recebem valores que nenhuma regra lhes atribuiu diretamente.
    • Acompanhe a cascata para identificar a declaração que prevalece
      Aplique as etapas da cascata (origem e importância, especificidade e, depois, ordem de aparecimento) e use com cuidado estilos em linha, !important e camadas de cascata.
    • Calcule e compare a especificidade
      Calcule a pontuação de qualquer seletor no formato ID–classe–tipo, compare pontuações coluna por coluna e mantenha a especificidade baixa para facilitar a substituição dos estilos.
    • Use a herança e as palavras-chave globais
      Saiba quais propriedades passam do elemento pai para o filho, use a herança para escrever menos CSS e controle-a com inherit, initial, unset e revert.
  4. Especifique cores nas principais notações CSS, torne o texto legível sobre seu fundo e escolha entre unidades absolutas e relativas para texto, espaçamento e dimensões.
    • Especifique cores com palavras-chave, notação hexadecimal, rgb() e hsl()
      Use palavras-chave de cores, códigos hexadecimais, rgb() e hsl(), adicione transparência e verifique se o texto tem contraste suficiente com o fundo.
    • Escolha medidas de comprimento e unidades
      Use corretamente pixels, em, rem, porcentagens e unidades relativas à área de visualização, saiba qual é a referência de cada unidade relativa e combine unidades com calc().
  5. Explique como cada elemento é desenhado como uma caixa com conteúdo, preenchimento interno, borda e margem, calcule seu tamanho e controle o espaço dentro e entre caixas.
    • Calcule as dimensões das caixas a partir do conteúdo, do preenchimento interno, da borda e da margem
      Nomeie as quatro partes de uma caixa, escreva as propriedades abreviadas de espaçamento e calcule o tamanho de um elemento nos modelos de caixa padrão e alternativo.
    • Controle o espaçamento entre caixas de bloco e caixas em linha
      Preveja como caixas de bloco, em linha e de bloco em linha ocupam espaço, centralize um bloco com margens automáticas e reconheça quando margens verticais entram em colapso.
  6. Escolha e carregue fontes, torne o texto legível, estilize listas e links e decore caixas com fundos, gradientes, bordas, cantos arredondados e sombras.
    • Escolha fontes e carregue fontes web
      Escreva listas de fontes alternativas, defina tamanho, peso e estilo, use a propriedade abreviada font e carregue uma fonte personalizada com @font-face.
    • Estilize textos, listas e links para facilitar a leitura
      Defina altura de linha, alinhamento, decoração, maiúsculas e minúsculas e espaçamento, altere marcadores e recuos de listas e dê aos links estados claros e acessíveis.
    • Adicione cores, imagens e gradientes de fundo
      Preencha caixas com cores, imagens e gradientes, controle como as imagens de fundo se repetem, são dimensionadas e posicionadas, e escreva a propriedade abreviada background.
    • Desenhe bordas, cantos arredondados, contornos e sombras
      Escreva propriedades abreviadas de borda para todos os lados ou para lados individuais, arredonde cantos com border-radius e adicione contornos e sombras sem alterar o layout.

Guia de estudo de CSS

6 capítulos

1

Vincule o CSS e inspecione o resultado

O CSS transforma uma página HTML com significado em uma página com cores, fontes e espaçamentos escolhidos. Uma regra funcional precisa de sintaxe válida e de uma conexão com o documento. O navegador também traz seus próprios estilos, então você sempre começa com uma aparência existente. Aprenda a vincular uma folha de estilo externa, fazer uma pequena alteração e acompanhá-la nas ferramentas do desenvolvedor quando o resultado for diferente do esperado.

1.1 Regras, declarações e folhas de estilo

O HTML descreve conteúdo e significado. CSS, sigla de folhas de estilo em cascata, descreve a apresentação: cores, fontes, espaçamento, bordas e fundos. Alterar uma folha de estilo pode dar ao mesmo HTML uma aparência diferente sem mudar seus títulos, parágrafos ou links.

Leia uma regra
p {
  color: navy;
  font-size: 18px;
}

O seletor p corresponde a parágrafos. As chaves delimitam o bloco de declarações. Cada declaração tem uma propriedade, dois-pontos, um valor e um ponto e vírgula. Aqui, color e font-size são propriedades; navy e 18px são valores. Quebras de linha e espaços entre essas partes tornam o código mais fácil de ler sem alterar seu efeito.

Um ponto e vírgula separa uma declaração da seguinte. O último é opcional, mas mantê-lo evita erros quando você adiciona outra linha. Em color: navy font-size: 18px;, o navegador lê um único valor de cor inválido. Ele não consegue recuperar as duas declarações pretendidas, então nenhum dos dois estilos é definido por esse texto.

Vincule o CSS

Uma folha de estilo externa é um arquivo CSS separado, vinculado a partir do head do HTML:

<link rel="stylesheet" href="css/styles.css">

Esse caminho indica que uma pasta chamada css fica ao lado do arquivo HTML e contém styles.css. Um arquivo externo pode estilizar várias páginas. Salvar uma alteração nele atualiza as regras que essas páginas carregam.

Um elemento style no head contém regras para uma página. Um atributo style em linha contém declarações para um elemento, como em <p style="color: crimson;">Hello.</p>. Folhas de estilo externas geralmente são mais fáceis de manter. Declarações normais em linha também têm precedência sobre regras normais de folhas de estilo do autor, o que pode dificultar alterações posteriores.

Para obter um primeiro resultado, coloque body { font-family: Arial, sans-serif; } e h1 { color: darkslateblue; } no arquivo vinculado. Recarregue a página. O corpo do texto usa Arial quando disponível, com uma fonte sem serifa como alternativa; o título muda de cor. Controles como botões podem manter sua própria fonte do navegador até que você os faça herdá-la explicitamente.

Encontre erros de sintaxe e de caminho

Navegadores ignoram declarações inválidas e continuam. color: 12px; é inválido porque uma medida de comprimento não é uma cor. font-size: 16 px; é inválido porque o número e a unidade devem estar juntos. Uma propriedade escrita incorretamente também é ignorada. Uma declaração de borda válida no mesmo bloco ainda pode funcionar, então uma alteração visível não prova que todas as declarações são válidas.

Comentários CSS usam /* Header styles */ e podem ocupar várias linhas. // não inicia um comentário CSS; pode fazer com que o código seguinte seja ignorado. Nomes de propriedades e valores comuns de palavras-chave não diferenciam maiúsculas de minúsculas; por convenção, mantenha-os em minúsculas. Nomes de classes e caminhos de arquivos devem corresponder à grafia e ao uso de maiúsculas e minúsculas reais.

Se nenhum estilo aparecer, verifique a requisição no painel Rede. Um caminho errado como style.css pode retornar 404 mesmo que a própria página HTML abra normalmente.

Trate propriedades abreviadas como configurações completas

Uma propriedade abreviada define várias propriedades relacionadas de uma vez. margin: 10px 20px; define as quatro margens. Partes omitidas voltam a seus valores iniciais: background-image: url("sky.jpg"); seguido de background: lightblue; remove a imagem. Coloque primeiro a propriedade abreviada e depois as exceções individuais que devem ser mantidas.

Principais conclusões

  • Escreva cada declaração como property: value; dentro de uma regra.
  • Vincule uma folha de estilo externa a partir do head do HTML; resolva seu caminho a partir do arquivo HTML.
  • Um navegador ignora CSS inválido e continua com as declarações válidas.
  • Use /* ... */ para comentários CSS.
  • Uma propriedade abreviada redefine as propriedades individuais relacionadas que omite.

1.2 Padrões do navegador e ferramentas do desenvolvedor

Uma página HTML simples ainda tem títulos grandes, espaçamento entre parágrafos, marcadores de lista e links sublinhados. Eles vêm da folha de estilo do agente de usuário, o CSS embutido do navegador. Seus estilos começam a partir desses padrões; uma página sem estilização própria não é uma página sem regras CSS.

Escolha o significado antes da aparência

Padrões típicos incluem uma margem de 8px no body, margens verticais de 1em nos parágrafos e 40px de preenchimento interno no lado inicial das listas. Os padrões de títulos incluem 2em para h1 e 1.5em para h2, com margens verticais de 0.67em para h1. Texto de importância acentuada fica em negrito; texto enfatizado fica em itálico. Links não visitados geralmente são azuis e links visitados, roxos. Configurações e implementações dos navegadores podem afetar os padrões, então inspecione a página real quando a precisão for importante.

O tamanho padrão do texto costuma ser 16px, com uma fonte escolhida nas configurações do navegador. Leitores podem alterar esse tamanho. Tamanhos de fonte relativos podem acompanhar essa escolha.

Escolha um elemento HTML por seu significado e depois estilize-o. Se um h2 parecer grande demais, use h2 { font-size: 1.25rem; }. Escolher um h4 apenas para obter letras menores mudaria a estrutura de títulos. Alterar o tamanho no CSS mantém intacto o significado do título de segundo nível.

Os padrões também determinam como os elementos ocupam espaço. Parágrafos e seções normalmente formam caixas de bloco. Elementos span e links normalmente fluem dentro das linhas. Itens de lista têm display: list-item, o que lhes dá uma caixa de nível de bloco e um marcador. Uma alteração de display no CSS muda o comportamento da caixa, preservando o significado HTML do elemento.

Redefina apenas o que você pretende

Uma redefinição de estilos remove padrões selecionados. body { margin: 0; } remove o espaço externo. Uma regra abrangente como * { margin: 0; padding: 0; } também remove o espaçamento dos parágrafos e o recuo das listas, que você precisará reconstruir. Uma abordagem de normalização mantém padrões úteis e ajusta inconsistências.

Controles de formulário frequentemente têm fontes atribuídas diretamente pelo navegador. Para fazê-los usar a mesma fonte da página, escreva:

button, input, select, textarea {
  font: inherit;
}

Comece o documento HTML com <!DOCTYPE html>. Isso seleciona o modo de padrões. Omitir a declaração de tipo de documento pode ativar o modo de compatibilidade, no qual comportamentos de compatibilidade antigos alteram alguns dimensionamentos e outros resultados do CSS.

Inspecione a propriedade que surpreende você

Clique com o botão direito em um elemento e escolha Inspecionar. O painel Estilos mostra as regras correspondentes, incluindo regras do navegador identificadas como estilos do agente de usuário. Uma declaração riscada perdeu para outra declaração; um aviso pode indicar CSS inválido. As declarações que prevalecem são escolhidas propriedade por propriedade, então uma regra pode perder sua cor e ainda fornecer seu preenchimento interno.

O painel Computado mostra os valores finais das propriedades e o conteúdo, o preenchimento interno, a borda e a margem do modelo de caixa. Se um título tiver um espaço inesperado, inspecione sua margem antes de adicionar preenchimento interno a outro elemento. Teste uma alteração diretamente nas ferramentas do desenvolvedor e depois copie a regra que funciona para sua folha de estilo: alterações feitas na inspeção desaparecem ao recarregar a página.

Quando um estilo falhar, siga uma ordem útil: verifique se a folha de estilo carregou, se o seletor corresponde, se a declaração é válida, se ela prevalece e se a propriedade afeta esse tipo de caixa. Um width: 200px válido ainda não dimensiona um span comum exibido em linha.

Principais conclusões

  • A folha de estilo do agente de usuário fornece padrões legíveis antes de seu CSS ser aplicado.
  • Escolha elementos HTML pelo significado e altere sua aparência com CSS.
  • Uma redefinição de estilos remove padrões que você pode precisar adicionar novamente.
  • Use o modo de padrões com <!DOCTYPE html>.
  • Inspecione as regras correspondentes, a validade e as declarações riscadas antes de alterar o código.
  • Salve na folha de estilo os testes bem-sucedidos feitos nas ferramentas do desenvolvedor.
2

Selecione exatamente os elementos desejados

Um seletor descreve quais elementos uma regra alcança. Alguns seletores correspondem a nomes ou atributos; outros correspondem a um estado, a uma parte de um elemento ou a uma relação na árvore HTML. Pequenas mudanças na pontuação importam: um espaço, uma vírgula e um ponto fazem solicitações diferentes. Comece pelo elemento que você quer estilizar e volte pelas condições que o identificam, para que uma regra alcance todos os elementos pretendidos e deixe os demais intactos.

2.1 Seletores de tipo, classe, ID e compostos

Um seletor responde a uma pergunta prática: quais elementos devem receber estas declarações? Comece pela correspondência mais simples que expresse a função desejada. Uma classe pode ser reutilizada em muitos elementos sem vincular o estilo a uma única posição na página.

Selecione nomes e atributos
SeletorCorresponde a
pTodos os parágrafos
.warningTodos os elementos com a classe warning
#site-headerO elemento com o ID site-header
*Todos os elementos

Um seletor de tipo é o nome de um elemento. Um seletor de classe começa com um ponto; um seletor de ID começa com #. A pontuação pertence ao seletor CSS, não ao valor do atributo HTML. Escreva <p class="warning">, não <p class=".warning">.

Um elemento pode ter várias classes separadas por espaços. Tanto <p class="warning"> quanto <div class="box warning"> correspondem a .warning. Um ID deve ser único dentro de uma página. Sua alta especificidade também dificulta sobrescrever estilos baseados em ID, então classes costumam ser a principal ferramenta para estilos reutilizáveis.

Use nomes que descrevam uma função, como .error-message ou .product-card. Um nome como .red-text se torna enganoso se o design mudar para outra cor. Nomes de classes diferenciam maiúsculas de minúsculas: .Warning e .warning são diferentes. Um nome que começa com um dígito precisa ser escapado em um seletor CSS; escolher .three-columns evita a forma inválida sem escape .3-columns.

Exija várias condições em um elemento

Escrever seletores juntos cria um seletor composto. O mesmo elemento deve satisfazer todas as partes. p.intro corresponde a parágrafos que têm a classe intro. .card.featured corresponde a um elemento com ambas as classes.

<p class="note important">Doors open at 19:00.</p>
<p class="note">Bring your ticket.</p>
.note { color: #333333; }
.important { font-weight: bold; }
p.note.important { border-left: 4px solid crimson; }

Primeiro encontre as correspondências. Ambos os parágrafos têm note, então ambos recebem texto cinza-escuro. Apenas o primeiro tem important, então só ele fica em negrito. O seletor composto adiciona a borda esquerda a esse mesmo primeiro parágrafo porque ele é um p com ambas as classes. Nenhum elemento envolvente adicional é necessário.

Um espaço muda a tarefa: p .intro seleciona um elemento com a classe intro dentro de um parágrafo. Ele não seleciona o próprio parágrafo. Mantenha as partes juntas quando descreverem o mesmo elemento.

Compartilhe um bloco de declarações

Uma vírgula cria uma lista de seletores:

h1, h2, h3 { font-family: Georgia, serif; }

Cada seletor corresponde independentemente a seu nível de título. Sem as vírgulas, h1 h2 h3 buscaria um h3 dentro de um h2 dentro de um h1.

Um seletor inválido em uma lista comum de seletores pode invalidar a regra inteira. h1, h2..title, h3 não estiliza nenhum desses títulos porque o ponto duplo é inválido. Quando uma regra compartilhada parece ausente, verifique todos os seletores da lista, não apenas o do elemento inspecionado.

Principais conclusões

  • Uma classe pode aparecer em muitos elementos, e um elemento pode ter várias classes.
  • Um ID deve ser único na página e tem alta especificidade como seletor.
  • p.intro exige ambas as condições em um elemento; p .intro descreve um descendente.
  • Vírgulas criam seletores independentes que compartilham declarações.

2.2 Atributos, estados e partes

Algumas condições de estilização já estão presentes nos atributos HTML. Outras dependem do que o leitor está fazendo ou da posição de um elemento entre seus irmãos. O CSS pode corresponder a essas condições sem adicionar uma classe para cada uma.

Selecione um atributo ou seu valor

Seletores de atributo usam colchetes. [alt] corresponde à presença de um atributo, mesmo que seu valor esteja vazio. input[type="email"] exige o valor exato do atributo.

PadrãoSignificado
[href^="https"]O valor começa com https
[href$=".pdf"]O valor termina com .pdf
[href*="example"]O valor contém example
[class~="note"]Uma lista separada por espaços contém a palavra note
`[lang="en"]`

Adicione i antes do colchete de fechamento para ignorar a diferença entre maiúsculas e minúsculas, como em a[href$=".pdf" i]. Ele também alcança um link terminado em .PDF. A correspondência de palavra inteira impede que note corresponda acidentalmente a uma palavra de classe mais longa, como notebook.

Selecione um estado ou uma posição

Uma pseudoclasse usa um par de dois-pontos: :hover, :focus, :checked ou :disabled. :focus-visible seleciona um elemento com foco quando o navegador determina que um indicador visível é necessário, geralmente durante a navegação por teclado.

Um link pode estar visitado e com o ponteiro sobre ele ao mesmo tempo. Para regras concorrentes com a mesma especificidade, escreva os estados de link nesta ordem: :link, :visited, :focus, :hover, :active. Caso contrário, uma regra posterior de cor de visitado prevaleceria sobre uma regra anterior de cor ao passar o ponteiro em um link visitado. Os navegadores restringem :visited a certas alterações de cor para proteger a privacidade; definir seu peso de fonte não funciona, e a transparência não pode revelar o histórico de visitas.

Pseudoclasses estruturais contam irmãos. :first-child significa o primeiro elemento filho de seu elemento pai. Em <article><h2>News</h2><p>Update</p></article>, p:first-child não corresponde a nada. p:first-of-type corresponde a esse parágrafo.

:nth-child(3) seleciona o terceiro filho. odd seleciona as posições 1, 3, 5; even seleciona 2, 4, 6. Em :nth-child(3n+1), comece com n = 0, depois 1, 2 e 3: as posições correspondentes são 1, 4, 7 e 10. li:not(:last-child) exclui o último item, sendo útil para separadores apenas entre itens.

Estilize uma parte ou adicione uma indicação

Um pseudoelemento usa dois pares de dois-pontos. ::first-line e ::first-letter estilizam partes do texto; ::marker estiliza marcadores de lista, ::placeholder estiliza a orientação de um campo e ::selection estiliza texto selecionado. As formas antigas com um par de dois-pontos para before, after, first-line e first-letter ainda funcionam.

.required::after {
  content: " *";
  color: crimson;
}

::after cria conteúdo dentro do elemento selecionado, depois do conteúdo existente. ::before o cria antes. Ambos precisam de um valor de content; até content: "" cria uma caixa decorativa. Textos essenciais pertencem ao HTML, onde continuam sendo conteúdo real do documento. Use esses pseudoelementos para decoração ou pequenas indicações, pois o texto gerado não pode ser selecionado ou copiado de forma confiável como o texto HTML.

Principais conclusões

  • Operadores de atributo distinguem presença, valores exatos, fragmentos de texto e palavras inteiras.
  • Uma pseudoclasse seleciona um estado ou uma posição; um pseudoelemento estiliza uma parte ou conteúdo gerado.
  • :first-child conta todos os elementos irmãos, enquanto :first-of-type conta o mesmo tipo de elemento.
  • Estados de links podem se sobrepor, então regras de estado concorrentes precisam de uma ordem planejada.
  • ::before e ::after precisam de content; informações essenciais pertencem ao HTML.

2.3 Relações na árvore HTML

Elementos HTML formam uma árvore. Um elemento diretamente dentro de outro é seu filho; qualquer elemento aninhado dentro dele é um descendente. Elementos que compartilham um elemento pai são irmãos. Um combinador conecta seletores por uma dessas relações.

Acompanhe a relação até o alvo
CombinadorExemploAlvo
Espaçonav aQualquer link dentro de um nav, em qualquer nível
>.menu > liUm li diretamente dentro de .menu
+h2 + pUm parágrafo imediatamente depois de um h2, com o mesmo elemento pai
~h2 ~ pQualquer parágrafo irmão posterior a um h2

A parte mais à direita nomeia o elemento que recebe as declarações. h2 + p estiliza o parágrafo, não o título. Ambos os combinadores de irmãos olham para a frente entre os irmãos; nenhum deles seleciona um elemento pai ou um irmão anterior.

Acompanhe uma lista aninhada
<ul class="menu">
  <li>Guides</li>
  <li>Topics
    <ul>
      <li>Typography</li>
    </ul>
  </li>
</ul>

.menu li corresponde aos três itens de lista porque os três são descendentes da lista externa. .menu > li corresponde apenas a “Guides” e “Topics”: o elemento pai deles é a lista com a classe menu. O elemento pai do item “Typography” é o ul interno, que não tem essa classe.

Essa distinção importa quando itens de nível superior precisam de preenchimento interno amplo, mas itens aninhados precisam de espaçamento compacto. Um seletor de descendente alcança todos os níveis, a menos que outra condição o restrinja.

Acompanhe os irmãos seguintes
<article>
  <h2>Opening hours</h2>
  <p>Visit in the morning.</p>
  <aside>Closed on holidays.</aside>
  <p>Booking is optional.</p>
</article>

h2 + p corresponde a “Visite pela manhã.” Ele não pula o aside para encontrar outro parágrafo. h2 ~ p corresponde a ambos os parágrafos porque os dois vêm depois do título e compartilham seu elemento pai. Se um parágrafo estivesse dentro do aside, ele não seria irmão do título e, por esse motivo, não corresponderia a nenhum dos dois seletores.

Combine relações sem alcançar elementos indesejados

.sidebar > ul a:hover corresponde a links com o ponteiro sobre eles em qualquer nível dentro de um ul cujo elemento pai direto tem a classe sidebar. Leia da direita para a esquerda: um link com o ponteiro sobre ele; dentro de uma lista; essa lista diretamente dentro da barra lateral. O espaço permite elementos intermediários entre a lista e o link.

Combinadores não acrescentam especificidade. O elemento, a classe, o ID e outras partes de correspondência do seletor continuam acrescentando. Por isso, sequências longas podem tornar as regras mais difíceis de manter, embora os símbolos de relação não acrescentem pontos: alterar o aninhamento do HTML pode impedir suas correspondências. Uma classe descritiva no alvo, como .menu-link, frequentemente expressa uma função reutilizável com mais clareza.

Quando uma regra não corresponder, inspecione a árvore real em vez de contar espaços visuais. Dois elementos podem aparecer lado a lado na tela e ter elementos pais diferentes no HTML. Comentários e espaços em branco não contam como elementos irmãos para esses combinadores.

Principais conclusões

  • Um espaço alcança descendentes em qualquer nível; > alcança filhos diretos.
  • + alcança o elemento irmão imediatamente seguinte; ~ alcança irmãos posteriores correspondentes.
  • O seletor mais à direita nomeia o elemento que recebe o estilo.
  • Combinadores não acrescentam especificidade, mas sequências longas de seletores dependem muito da estrutura HTML.
3

Determine qual declaração prevalece

Várias regras podem corresponder a um elemento, e cada uma pode contribuir com uma parte diferente de sua aparência. A cascata escolhe um valor para cada propriedade por meio de uma sequência de comparações. A especificidade só importa depois que as comparações de prioridade mais alta empatam. A herança ajuda os estilos de texto a se propagarem pela página sem uma regra para cada elemento. Manter essas funções separadas torna muito mais fácil explicar e corrigir uma declaração riscada.

3.1 A cascata, estilos em linha e camadas

A cascata escolhe a declaração que prevalece para cada propriedade de cada elemento. Ela não escolhe uma regra inteira e descarta todas as outras. Com p { color: gray; font-size: 18px; } e .lead { color: black; }, um parágrafo com a classe lead pode receber sua cor da regra de classe e seu tamanho da regra de tipo.

Compare na ordem correta

Primeiro, elimine as declarações que não se aplicam: seus seletores devem corresponder e quaisquer condições devem ser atendidas. Depois, compare origem e importância, incluindo a prioridade da camada de cascata. Estilos normais em linha do autor têm precedência sobre regras normais das folhas de estilo do autor. Quando as declarações ainda empatam nessas etapas anteriores, compare a especificidade; use a ordem de aparecimento para resolver um empate restante.

Origem da declaração normalPrioridade
Autor: o CSS do siteA mais alta das três
Usuário: estilos personalizados do leitorEntre autor e navegador
Agente de usuário: padrões do navegadorA mais baixa

Duas regras .button de mesma prioridade que definem cores de fundo diferentes são resolvidas pela ordem: a posterior prevalece. Folhas de estilo vinculadas mais adiante no HTML também vêm depois nesses empates. Um arquivo chegar mais rápido pela rede não faz com que ele venha depois na cascata.

Entenda a importância antes de adicioná-la

Uma declaração em linha como style="color: purple;" prevalece sobre seletores normais de folhas de estilo do autor, mesmo seletores com IDs. Uma declaração de folha de estilo do autor com !important pode prevalecer sobre essa declaração normal em linha.

<p class="note" style="color: purple;">Check the time.</p>
p { color: gray !important; }
.note { color: blue; }

O parágrafo fica cinza. A importância é comparada antes da especificidade do seletor ou da vantagem normal do estilo em linha. Se a cor em linha também tiver !important, essa declaração importante em linha prevalecerá sobre a regra importante da folha de estilo do autor.

Para declarações importantes, a prioridade das origens se inverte: declarações importantes do navegador têm precedência sobre declarações importantes do usuário, que têm precedência sobre declarações importantes do autor. Isso protege regras que leitores ou navegadores precisam impor. Dentro de uma origem, a precedência de estilos em linha e de camadas ainda vem antes da especificidade e da ordem no código-fonte.

Usar !important para todo conflito cria substituições cada vez mais difíceis. Prefira um seletor mais simples ou uma ordem planejada. Sobrescrever regras de terceiros que você não pode editar pode justificar uma declaração importante; ela deve ser uma exceção consciente.

Agrupe regras em camadas de cascata
@layer reset, base, components;
@layer base {
  p { margin: 0 0 1rem; }
}

Isso declara a ordem das camadas antes de suas regras. Para declarações normais, camadas posteriores prevalecem sobre camadas anteriores, independentemente da especificidade do seletor. Regras normais fora de qualquer camada prevalecem sobre regras normais em camadas. Assim, uma regra de componente com baixa especificidade pode sobrescrever uma regra de base com alta especificidade sem adicionar IDs.

Declarações importantes invertem essa ordem das camadas: camadas anteriores prevalecem sobre posteriores, e declarações importantes em camadas prevalecem sobre declarações importantes fora de camadas. Essa inversão preserva proteções importantes nas camadas fundamentais. Ao investigar um conflito, estabeleça a origem, a importância e o grupo de camadas que prevalecem antes de gastar tempo contando partes de seletores.

Principais conclusões

  • A cascata seleciona declarações separadamente para cada propriedade.
  • Origem, importância, prioridade de estilos em linha e prioridade de camadas vêm antes da especificidade.
  • Estilos normais em linha do autor prevalecem sobre regras normais de folhas de estilo do autor.
  • !important altera a prioridade; não acrescenta especificidade.
  • A prioridade normal favorece camadas posteriores e regras fora de camadas; a prioridade de camadas importantes se inverte.
  • A ordem de aparecimento só resolve declarações depois que as comparações anteriores empatam.

3.2 Especificidade sem adivinhação

A especificidade mede o peso de seleção do seletor. Compare-a apenas entre declarações que ainda empatam nas etapas anteriores da cascata, incluindo origem, importância, camada e prioridade de estilos em linha.

Conte três colunas

Escreva a especificidade como ID–CLASSE–TIPO, por exemplo, 0-1-1.

ColunaConte cada um destes
IDSeletores de ID como #menu
CLASSEClasses, seletores de atributo e pseudoclasses comuns
TIPOSeletores de tipo e pseudoelementos

O seletor universal * e os combinadores não acrescentam nada. Para a[href^="https"]:focus, conte nenhum ID, duas partes de CLASSE (o atributo e :focus) e uma parte de TIPO (a). O resultado é 0-2-1.

Mais exemplos: .nav a é 0-1-1; ul li a:hover é 0-1-3; #main .card > h2 é 1-1-1; article p::first-line é 0-0-3. Um pseudoelemento conta com os tipos, embora seu nome comece com dois-pontos.

Compare a partir da esquerda

Compare os IDs primeiro. Se houver empate, compare CLASSE; se também houver empate, compare TIPO. Apenas triplas iguais passam para a ordem no código-fonte. São contagens separadas, não dígitos de um número decimal: 0-11-0 ainda perde para 1-0-0. Classes adicionais não são transportadas para um ID.

<nav id="site-nav">
  <a class="active" href="/">Home</a>
</nav>
#site-nav a { color: white; }
nav a.active { color: orange; }
.active { color: yellow; }

Suponha que essas sejam declarações normais na mesma camada do autor. Suas pontuações são 1-0-1, 0-1-2 e 0-1-0. A primeira prevalece, então o link fica branco. Sua coluna ID resolve a comparação antes que qualquer contagem de classes ou tipos importe.

#site-nav .active prevaleceria com 1-1-0, mas um design baseado em classes é mais fácil de ampliar: .site-nav a pode fornecer o estilo base, com .site-nav .active alterando o link ativo. Isso mantém a especificidade baixa e relativamente uniforme.

Conheça as exceções funcionais

:is(), :not() e :has() não acrescentam peso pela própria função. Seu argumento mais específico fornece o peso. Assim, li:not(.done) é 0-1-1, e :is(#intro, p) a é 1-0-1. Conte o seletor mais específico da lista de argumentos, não aquele que você considera visualmente mais próximo do elemento.

:where() e tudo o que está dentro dele sempre contribuem com zero. Portanto, :where(#main) p tem pontuação 0-0-1. Ele é útil para padrões que devem ser fáceis de sobrescrever.

A distância até um ancestral não conta. body h1 e html h1 têm pontuação 0-0-2, então uma declaração posterior resolve o empate. Estilos em linha são tratados antes da especificidade do seletor, e !important pertence à importância. Nenhum dos dois é outra parte comum de seletor a ser adicionada à tripla.

Principais conclusões

  • Conte IDs, depois classes/atributos/pseudoclasses e, por fim, tipos/pseudoelementos.
  • Compare triplas coluna por coluna; uma coluna de prioridade menor não pode superar uma de prioridade maior.
  • Combinadores e * acrescentam zero.
  • :is(), :not() e :has() usam seu argumento mais específico; :where() contribui com zero.
  • A distância até um ancestral não afeta a especificidade.

3.3 Valores herdados e redefinições intencionais

A herança permite que um filho receba um valor de seu elemento pai quando a propriedade normalmente é herdada e nenhuma declaração fornece um valor diferente para o filho. É por isso que uma regra no body pode estabelecer a cor e a fonte do texto para grande parte de uma página.

Separe o texto herdado das configurações de caixa

A maioria das propriedades de texto é herdada: color, propriedades de fonte, line-height, letter-spacing, text-align e text-transform. Estilos de lista e visibility também são herdados. Propriedades de caixa como margem, preenchimento interno, borda, largura, altura, fundos, exibição e dimensionamento da caixa não são.

body { color: #222222; font-family: Georgia, serif; }
h1, h2 { font-family: Arial, sans-serif; }
footer { color: #666666; }

O corpo do texto comum usa Georgia em cinza-escuro. Os títulos recebem sua família de fontes atribuída diretamente e mantêm a cor herdada. O texto do rodapé herda Georgia, enquanto sua cor muda localmente.

O fundo transparente de um filho deixa o fundo do elemento pai aparecer; isso não significa que o filho herdou a cor de fundo. Da mesma forma, filhos de uma caixa com borda não recebem automaticamente suas próprias bordas.

Atribuições diretas prevalecem sobre valores que seriam herdados

Com #content { color: red; } e p { color: blue; }, um parágrafo dentro da área de conteúdo fica azul. A especificidade do ID não compete com a regra do parágrafo porque as declarações selecionam elementos diferentes. O parágrafo já tem uma cor atribuída diretamente, então não precisa do vermelho herdado.

Os filhos geralmente herdam valores computados. Se uma seção tem font-size: 20px e seu filho tem font-size: 0.8em, o valor computado desse filho é 16px. Um parágrafo dentro dele herda 16px; ele não multiplica por 0.8 novamente. Uma altura de linha sem unidade é útil porque o valor herdado continua sendo um multiplicador para o tamanho da fonte de cada filho.

Escolha o significado de uma redefinição
Palavra-chaveEfeito
inheritRecebe o valor computado do elemento pai
initialUsa o valor inicial da propriedade CSS
unsetHerda uma propriedade herdada; inicializa uma não herdada
revertReverte os estilos da origem atual
revert-layerReverte os estilos da camada de cascata atual

Para CSS do autor, revert revela a estilização da origem do usuário ou do navegador. A diferença importa em um div: display: initial resulta no valor inicial inline da propriedade, enquanto display: revert restaura sua exibição block habitual do navegador. Um valor inicial pertence à propriedade CSS; um padrão do navegador pode depender do elemento HTML.

inherit funciona mesmo em uma propriedade que normalmente não é herdada, como border: inherit. button, input { font: inherit; } substitui as fontes atribuídas diretamente aos controles pela fonte de seu elemento pai. all: unset redefine quase todas as propriedades de uma vez, o que também remove aparências nativas úteis.

Uma aparente exceção é o sublinhado. text-decoration não é herdada, mas o sublinhado de um elemento pai é desenhado através de seus descendentes em linha. Definir text-decoration: none em um span aninhado não pode apagar a linha do elemento pai. Remova-a do elemento pai e aplique-a apenas ao texto que deve recebê-la.

Principais conclusões

  • A maioria das propriedades de texto é herdada; propriedades de caixa geralmente não são.
  • Um valor atribuído diretamente a um filho tem prioridade sobre um valor herdado do elemento pai.
  • initial significa o valor inicial do CSS; revert pode restaurar padrões do navegador para elementos.
  • unset escolhe entre herança e inicialização de acordo com a propriedade.
  • revert-layer remove a camada atual da decisão sobre essa propriedade.
  • O sublinhado de um elemento pai é desenhado através de descendentes em linha sem ser herdado.
4

Especifique cores e escolha unidades úteis

Valores CSS precisam ter um significado claro e uma grafia válida. Uma cor pode ser especificada por nome, por valores de canais ou por matiz, e a transparência muda o que o leitor vê no final. Uma medida de comprimento pode acompanhar o texto, um contêiner ou a janela do navegador. Aprenda qual referência cada unidade usa e calcule o valor antes de verificá-lo no navegador. Essas escolhas ajudam os estilos a permanecer legíveis quando o conteúdo e as configurações do leitor mudam.

4.1 Valores de cor, alfa e contraste

color define a cor do texto. Fundos, bordas, contornos, decorações e sombras também aceitam valores de cor. A mesma cor pode ser especificada de várias formas; escolha uma notação que facilite entender a alteração pretendida.

Leia nomes e canais hexadecimais

O CSS tem cerca de 150 cores nomeadas, incluindo navy, tomato e rebeccapurple. Nomes são convenientes para testes rápidos, mas seus significados cotidianos podem surpreender: green é #008000, enquanto o verde puro e brilhante é lime, ou #00ff00. Valores exatos eliminam essa incerteza.

Uma cor hexadecimal de seis dígitos tem três pares de canais: vermelho, verde e azul. Cada par vai de 00 a ff, equivalente a 0 até 255. Todos em zero produzem preto; todos no máximo produzem branco. Pares iguais produzem um cinza, como em #808080.

A forma hexadecimal de três dígitos duplica cada dígito: #f0a se expande para #ff00aa. Ela não adiciona zeros. Uma cor como #1e90ff não pode ser abreviada porque nem todos os pares repetem seu dígito. Letras hexadecimais maiúsculas e minúsculas representam os mesmos valores.

Para converter um par, multiplique seu primeiro dígito por 16 e adicione o segundo. As letras de a a f significam 10 a 15. Para #1e90ff, 1e resulta em 30, 90 em 144 e ff em 255. A notação RGB correspondente é rgb(30 144 255). Código mais antigo pode usar vírgulas ou rgba(); essas formas ainda funcionam.

Descreva matiz ou transparência

hsl() especifica matiz, saturação e luminosidade. Matiz é um ângulo: 0 ou 360 é vermelho, 120 é verde e 240 é azul. A saturação vai de cinza em 0% a cor plena em 100%. A luminosidade vai de preto em 0% a branco em 100%. Uma matiz pura tem 100% de saturação e 50% de luminosidade, como em hsl(0 100% 50%). Alterar apenas a luminosidade cria versões escuras e claras relacionadas.

Um valor alfa vem depois de uma barra: rgb(0 0 0 / 0.6) é preto com 60% de opacidade. Zero é totalmente transparente e um é totalmente opaco. A notação hexadecimal de oito dígitos acrescenta um par alfa: #00000080 tem 128 de 255, cerca de 50% de alfa. transparent é totalmente transparente.

.notice {
  color: white;
  background-color: rgb(0 0 0 / 0.6);
}

Aqui, apenas o fundo é parcialmente transparente. opacity: 0.6 tornaria todo o elemento mais transparente, incluindo seu texto e seus filhos. Essa diferença importa quando você quer texto opaco e legível sobre uma superfície colorida.

Reutilize a cor e verifique o resultado

currentColor significa a própria cor de texto do elemento. Com color: #0055aa; border: 2px solid currentColor;, a borda acompanha o texto. Alterar a cor do texto também altera essa borda sem repetir um valor de cor.

O nível AA das WCAG 2.2 exige contraste de pelo menos 4,5:1 para texto normal e 3:1 para texto em tamanho grande, cerca de 24px ou cerca de 18,5px em negrito. #767676 sobre branco tem cerca de 4,54:1; #999999 sobre branco tem cerca de 2,85:1 e não atende a nenhum dos dois limiares. Use um verificador de contraste ou as ferramentas de cores do navegador no par real de primeiro plano e fundo, incluindo o efeito da transparência.

Principais conclusões

  • Cores hexadecimais codificam vermelho, verde e azul; a forma de três dígitos repete cada dígito.
  • rgb() fornece canais, enquanto hsl() fornece matiz, saturação e luminosidade.
  • Alfa em uma cor de fundo afeta essa cor; opacity torna todo o elemento mais transparente.
  • currentColor acompanha a cor do texto do elemento.
  • Texto normal precisa de contraste de pelo menos 4,5:1 no nível AA das WCAG; texto grande precisa de 3:1.

4.2 Pixels e medidas de comprimento relativas

Uma medida de comprimento combina um número com uma unidade, como 16px ou 1.5rem. Não há espaço entre eles. Uma largura diferente de zero precisa de unidade: width: 300; é inválido. Zero pode omitir sua unidade. Algumas propriedades recebem intencionalmente números simples, incluindo line-height: 1.5, opacity: 0.8 e font-weight: 700.

Relacione a unidade à sua referência
UnidadeReferência
pxUm pixel de referência CSS
em em font-sizeO tamanho da fonte do elemento pai
em em espaçamento e outras medidas de comprimentoO tamanho da fonte do próprio elemento
remO tamanho da fonte do elemento raiz
%Uma referência determinada pela propriedade
vw, vhLargura ou altura da área de visualização
chA largura do caractere zero da fonte

Um pixel CSS não é necessariamente um ponto físico da tela. Telas de alta densidade podem usar vários pixels do dispositivo para um pixel CSS. Relações fixas entre unidades incluem 1in = 96px = 2,54cm e 1pt = 1/72in. Assim, 12pt equivale a 16px e 1cm é cerca de 37,8px. Essas conversões não garantem uma medida física em todas as telas.

Calcule valores relativos à fonte

Suponha que um elemento pai tenha uma fonte de 16px e seu filho tenha font-size: 1.25em; padding: 2em;. Calcule primeiro o tamanho da fonte: 1,25 vez 16px resulta em 20px. O preenchimento interno usa então o tamanho do próprio filho, então 2 vezes 20px resulta em 40px de cada lado.

Tamanhos de fonte em aninhados podem se multiplicar. Com li { font-size: 1.25em; }, três níveis aninhados a partir de 16px passam a ter 20px, 25px e 31,25px. Já 1.25rem resulta em 20px em todos os níveis quando a raiz tem 16px.

Deixar o tamanho da raiz no padrão do navegador, ou defini-lo em porcentagem, permite que o texto relativo responda quando um leitor altera esse padrão. Um html { font-size: 16px; } fixo anula essa configuração. Um padrão prático é usar rem para o tamanho da fonte e em para o preenchimento interno de um botão, para que seu espaçamento cresça com seu próprio texto.

Verifique porcentagens e a área de visualização

A propriedade determina a referência da porcentagem. Um bloco de referência fornece uma referência para o tamanho da caixa; nestes exemplos de fluxo normal, ela costuma ser a área de conteúdo do elemento pai. Um filho com width: 40% em um bloco de referência de 600px tem 240px de largura antes de qualquer preenchimento interno ou borda no modelo content-box. font-size: 150% usa o tamanho da fonte do elemento pai. Mesmo o preenchimento interno e as margens superior e inferior em porcentagem usam a largura do bloco de referência, não sua altura.

1vw é 1% da largura da área de visualização; 1vh é 1% de sua altura. Em uma área de visualização de 1280 por 800 pixels CSS, 50vw é 640px e 10vh é 80px. 100vw pode incluir a largura da barra de rolagem, produzindo transbordamento horizontal onde 100% do elemento pai caberia.

max-width: 65ch dá a uma coluna de texto uma largura relacionada à fonte. É aproximadamente uma medida de comprimento de leitura, não uma garantia de que cada linha tenha exatamente 65 caracteres.

Combine unidades com um cálculo

width: calc(100% - 40px); subtrai uma quantidade fixa de um tamanho relativo. Mantenha espaços ao redor de + e -; calc(100%-40px) é inválido. Navegadores calculam medidas relativas à fonte em pixels, enquanto porcentagens do tamanho do contêiner são resolvidas durante o cálculo do layout. As ferramentas do desenvolvedor mostram os tamanhos resultantes para que você possa verificar tanto a referência quanto a conta.

Principais conclusões

  • Una os números diretamente às suas unidades; zero pode aparecer sozinho.
  • em usa o elemento pai para o tamanho da fonte e o próprio elemento para outras medidas de comprimento.
  • rem acompanha a raiz, evitando a multiplicação de tamanhos de fonte aninhados.
  • Referências de porcentagem dependem da propriedade; preenchimento interno em porcentagem usa a largura do contêiner.
  • Unidades relativas à área de visualização acompanham a janela; ch acompanha a fonte.
  • Use espaços ao redor de adição e subtração dentro de calc().
5

Meça caixas e controle o espaçamento

Todo elemento visível ocupa espaço como uma caixa. A largura que você escreve pode descrever apenas o conteúdo ou toda a caixa até a borda, e margens acrescentam outra camada de espaçamento fora dela. O tipo de exibição altera quais propriedades de tamanho e espaçamento têm efeito. Aprenda a calcular uma caixa antes de mudar suas dimensões e depois explique surpresas comuns, como um cartão de largura total que transborda, um link em linha que ignora a largura ou duas margens verticais que se combinam.

5.1 Conteúdo, preenchimento interno, borda e margem

De dentro para fora, uma caixa tem conteúdo, preenchimento interno, borda e margem. O conteúdo contém texto, imagens ou elementos filhos. O preenchimento interno cria espaço ao redor desse conteúdo. A borda envolve o preenchimento interno; a margem separa a caixa até a borda de suas vizinhas.

Um fundo preenche o conteúdo e o preenchimento interno e se estende sob a borda, mas nunca colore a margem. Use preenchimento interno quando o espaço deve fazer parte de um cartão colorido. Use margem para o espaço fora dele. Margens podem ser negativas; preenchimento interno não pode.

Leia as propriedades abreviadas de espaçamento

margin, padding e border-width aceitam de um a quatro valores:

ValoresLados definidos
10pxTodos os quatro
10px 20pxSuperior/inferior, depois esquerdo/direito
10px 20px 30pxSuperior, esquerdo/direito, inferior
10px 20px 30px 40pxSuperior, direito, inferior, esquerdo

A ordem de quatro valores segue no sentido horário a partir do topo. Use propriedades individuais como padding-left para alterar apenas um lado depois da propriedade abreviada. Não leia o segundo valor de uma forma com dois valores como o inferior: ele define ambos os lados horizontais.

Calcule a caixa de conteúdo padrão
.card {
  width: 300px;
  padding: 20px;
  border: 5px solid;
  margin: 10px;
}

O valor inicial de box-sizing é content-box. A largura declarada de 300px cobre apenas o conteúdo. Adicione duas vezes os 20px de preenchimento interno e duas vezes os 5px de borda: a caixa até a borda tem 350px de largura. Adicione as duas margens de 10px para obter 370px de espaço horizontal.

A altura funciona da mesma maneira quando é definida explicitamente, mas o texto frequentemente precisa de uma caixa que possa crescer. Manter height: auto evita prender conteúdo variável em uma altura fixa.

Inclua preenchimento interno e borda na largura

Com box-sizing: border-box, a mesma largura declarada inclui preenchimento interno e borda. A caixa até a borda continua com 300px; subtraia 40px de preenchimento interno e 10px de borda para encontrar uma área de conteúdo de 250px. As margens permanecem fora, resultando em 320px de espaço horizontal.

Uma redefinição comum aplica esse modelo aos elementos e às suas partes geradas:

*, *::before, *::after { box-sizing: border-box; }

box-sizing não é herdada automaticamente, então a regra seleciona as caixas diretamente.

Um filho de largura total facilita ver a diferença. Em um contêiner de 600px, width: 100%; padding: 0 20px; produz uma caixa até a borda de 640px no dimensionamento content-box, antes de qualquer borda. Com o dimensionamento border-box, a mesma largura declarada de 600px inclui o preenchimento interno e cabe no contêiner.

Faça o conteúdo caber com segurança

min-height define um limite inferior e permite o crescimento. max-width: 800px permite que um bloco de largura automática encolha em um contêiner estreito, impedindo que fique mais largo que 800px.

Se o conteúdo ultrapassar uma caixa fixa, overflow controla o resultado: visible transborda, hidden recorta, scroll solicita barras de rolagem e auto fornece rolagem quando necessário. pre { overflow: auto; } dá a uma linha longa de código sua própria área de rolagem. Recortar é uma solução ruim para texto de que os leitores ainda precisam; primeiro verifique se o tamanho fixo é necessário.

Use o diagrama de caixa do painel Computado para comparar os valores de conteúdo, preenchimento interno, borda e margem do navegador com seu cálculo.

Principais conclusões

  • O preenchimento interno fica dentro da borda; a margem fica fora e permanece transparente.
  • A largura content-box exclui o preenchimento interno e a borda.
  • A largura border-box inclui o preenchimento interno e a borda, mas nunca a margem.
  • As propriedades abreviadas de espaçamento seguem no sentido horário a partir do topo, com formas mais curtas compartilhando valores entre lados.
  • Use altura flexível e limites de tamanho para acomodar conteúdo variável.
  • overflow controla o conteúdo que ultrapassa a caixa.

5.2 Exibição, centralização e colapso de margens

O tipo de exibição determina como uma caixa se encaixa no que está ao seu redor. Um bloco normalmente começa em uma nova linha e preenche a largura disponível quando sua largura é automática. Uma caixa em linha comum flui dentro do texto e é dimensionada por seu conteúdo. Uma caixa de bloco em linha mantém a posição em linha e aceita dimensões explícitas.

Escolha o comportamento necessário
ExibiçãoLargura e alturaComportamento do espaçamento
blockSão aplicadasMargens e preenchimento interno separam caixas
inline comumNão dimensionam a caixaO espaçamento horizontal afeta o texto próximo
inline-blockSão aplicadasO espaçamento vertical e horizontal afeta o layout ao redor

Em elementos em linha comuns como span e a, margens superior e inferior não têm efeito. O preenchimento interno e as bordas verticais são desenhados, mas não afastam as linhas vizinhas, então podem se sobrepor a elas. Preenchimento interno, bordas e margens horizontais ocupam espaço ao longo da linha.

nav a {
  display: inline-block;
  padding: 8px 16px;
}

Esses links permanecem em uma linha enquanto suas caixas com preenchimento interno reservam espaço vertical. display: block daria a cada link sua própria linha. Imagens são um caso especial em linha: aceitam largura e altura. Seu alinhamento padrão pela linha de base pode deixar um pequeno espaço abaixo para as hastes descendentes das letras; img { display: block; } remove esse espaço da linha de base.

display: none remove a caixa e seu espaço e a remove da leitura por leitores de tela. visibility: hidden a oculta enquanto preserva seu espaço.

Centralize uma caixa ou seu conteúdo
.page {
  max-width: 960px;
  margin: 0 auto;
}

Em um contêiner mais largo, o bloco para de crescer em 960px e as duas margens horizontais automáticas dividem igualmente o espaço restante. Um bloco que preenche o contêiner não tem espaço horizontal restante para dividir. Margens automáticas não centralizam uma caixa em linha comum, e margens verticais automáticas no fluxo normal de blocos resultam em zero.

text-align: center faz outra tarefa: centraliza o conteúdo em linha dentro de um bloco. Uma caixa de parágrafo centralizada ainda pode ter texto alinhado à esquerda; um parágrafo de largura total pode ter texto centralizado sem se tornar uma caixa centralizada mais estreita.

Reconheça o colapso de margens verticais

No fluxo normal de blocos, margens superiores e inferiores adjacentes podem entrar em colapso. Duas margens positivas se tornam a maior delas. Um título com margem inferior de 24px seguido de um parágrafo com margem superior de 16px tem um espaço de 24px, não 40px. Margens horizontais não entram em colapso.

Com margens positivas e negativas, combine a maior positiva com a mais negativa: 20px e −8px resultam em 12px. Se todas forem negativas, prevalece a mais negativa. Uma caixa vazia sem conteúdo, altura, borda ou preenchimento interno que separe suas margens pode combinar suas próprias margens superior e inferior.

A margem superior de um primeiro filho também pode entrar em colapso através de um elemento pai sem borda, preenchimento interno ou conteúdo anterior que as separe. O espaço então aparece fora do fundo do elemento pai. Adicione preenchimento interno ou uma borda ao elemento pai, ou remova a margem superior do filho. Condições semelhantes permitem que a margem inferior de um último filho entre em colapso; uma altura ou altura mínima no elemento pai pode impedir esse caso inferior.

Caixas de bloco em linha não têm colapso de margens, assim como itens flexíveis ou de grade e caixas flutuantes ou posicionadas de forma absoluta. Um padrão simples de espaçamento de texto define margens superiores como zero e usa margens inferiores, com preenchimento interno para o espaço dentro de contêineres.

Principais conclusões

  • Caixas em linha comuns ignoram largura e altura definidas; caixas de bloco em linha as aceitam.
  • Margens horizontais automáticas centralizam um bloco mais estreito; text-align centraliza seu conteúdo em linha.
  • Margens verticais positivas adjacentes de blocos podem entrar em colapso e resultar no maior valor.
  • O preenchimento interno do elemento pai pode separar a margem de um primeiro filho da margem do elemento pai.
  • display: none remove o espaço; visibility: hidden o preserva.
6

Estilize textos legíveis e superfícies finalizadas

Fontes, espaçamento entre linhas e estados dos links influenciam o conforto com que um leitor usa uma página. Fundos, bordas e sombras distinguem suas caixas sem alterar seu significado. Crie estilos de texto com alternativas, mantenha o conteúdo essencial no HTML e escolha uma decoração que ajude o conteúdo. As mesmas regras de caixa e cascata continuam valendo: uma propriedade abreviada pode redefinir o peso de uma fonte, uma borda pode acrescentar largura e um contorno de foco pode mostrar um estado sem deslocar nada.

6.1 Listas de fontes alternativas e fontes web

A escolha de uma fonte é uma preferência com um plano alternativo. Dispositivos têm fontes instaladas diferentes, e uma fonte baixada pode chegar depois do texto. Uma lista de fontes alternativas mantém a página legível e preserva um estilo adequado.

Crie uma lista de fontes
body {
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 1rem;
}

O navegador tenta os nomes de família em ordem e usa uma fonte disponível. Coloque nomes que contêm espaços entre aspas. Deixe famílias genéricas sem aspas: "sans-serif" solicita uma fonte com esse nome exato; sans-serif solicita ao navegador uma fonte genérica adequada.

As opções genéricas incluem serif, sans-serif, monospace, cursive, fantasy e system-ui. A última usa a fonte da interface do sistema. Fontes frequentemente chamadas de seguras para a web, como Arial, Georgia e Verdana, são comuns, mas sua presença não é garantida. Uma alternativa genérica ainda deve ficar no final.

font-size aceita medidas de comprimento, porcentagens e palavras-chave de tamanho. Com uma raiz de 16px, 1rem resulta em 16px e 2.5rem resulta em 40px. Tamanhos relativos podem acompanhar as configurações do leitor.

Defina peso, estilo e propriedade abreviada com cuidado

font-weight: normal equivale a 400; bold equivale a 700. Valores como 300 e 600 solicitam outros pesos quando a fonte os oferece. Se um peso solicitado estiver ausente, o navegador escolhe um disponível ou pode simular o negrito. Com apenas 400 e 700 carregados, solicitar 300 usa 400. bolder e lighter são relativos ao elemento pai.

font-style: italic solicita uma versão em itálico; normal remove esse estilo. A propriedade abreviada font precisa de tamanho e família:

blockquote {
  font: italic 700 1.125rem/1.6 Georgia, serif;
}

Estilo, variante e peso opcionais vêm antes do tamanho. Uma barra associa a altura da linha ao tamanho, e a família vem por último. Omitir o tamanho ou a família invalida a propriedade abreviada. Outras configurações de fonte omitidas são redefinidas: font: 1rem Arial, sans-serif; redefine um peso anterior em negrito para normal.

Carregue um arquivo de fonte
@font-face {
  font-family: "Inter";
  src: url("fonts/inter-regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
body { font-family: "Inter", Arial, sans-serif; }

@font-face atribui um nome de família CSS a um arquivo. Use esse nome declarado na lista, não o nome do arquivo. Caminhos relativos de arquivos partem da localização da folha de estilo. WOFF2 é um formato compactado aceito pelos navegadores atuais.

Fontes estáticas geralmente precisam de arquivos e regras separados para cada peso e estilo. Fontes variáveis podem conter uma faixa de pesos em um único arquivo. Carregue os arquivos que o design realmente usa. font-display: swap exibe uma fonte alternativa imediatamente e a substitui quando a fonte web fica disponível.

Um serviço de fontes pode fornecer um link HTML e a declaração da família; hospedar a fonte por conta própria evita uma requisição a um servidor de terceiros. Verifique se a licença da fonte permite o uso em sites. Se a fonte parecer errada, inspecione a fonte renderizada e a requisição do arquivo. Um nome de família CSS escrito incorretamente faz o navegador usar uma alternativa sem aviso, então texto legível por si só não mostra que a fonte desejada foi carregada.

Principais conclusões

  • Escreva uma lista de fontes com uma alternativa genérica sem aspas.
  • O peso da fonte depende das versões ou faixas realmente disponíveis.
  • A propriedade abreviada font exige tamanho e família e redefine configurações omitidas.
  • @font-face define um nome de família e o arquivo que a fornece.
  • font-display: swap mantém o texto visível em uma fonte alternativa enquanto uma fonte web carrega.

A estilização do texto precisa continuar funcionando quando o tamanho, o conteúdo e o método de entrada mudam. Comece pelo espaçamento entre linhas e por larguras legíveis; depois adicione detalhes de listas e links que indiquem aos leitores como o conteúdo funciona.

Faça a altura da linha acompanhar cada tamanho de fonte

Use uma altura de linha sem unidade, como line-height: 1.5. Com texto de corpo de 16px, ela cria linhas de 24px. Os filhos herdam o número, então um título de 32px recebe linhas de 48px. Já um valor de 1.5em ou 150% no elemento pai é computado nele como 24px, e um filho pode herdar essa altura de linha fixa de 24px mesmo quando seu próprio texto é maior. O padrão normal depende da fonte e costuma ser cerca de 1,2.

body { font: 1.125rem/1.6 Georgia, serif; color: #222222; }
h1 { font: 700 2.25rem/1.2 Arial, sans-serif; }
p { max-width: 65ch; }

Com uma raiz de 16px, o corpo do texto tem 18px em linhas de 28,8px; o título tem 36px em linhas de 43,2px. O limite do parágrafo evita linhas muito longas em uma tela larga.

text-align posiciona conteúdo em linha dentro de um bloco. Os valores incluem left, right, center, justify, start e end; start/end seguem a direção da escrita. Ele não move o próprio bloco. A justificação em colunas estreitas pode criar espaços grandes entre palavras.

Altere a apresentação sem reescrever o texto

text-transform pode exibir palavras em maiúsculas, minúsculas ou com iniciais maiúsculas sem alterar o texto HTML. letter-spacing, word-spacing e text-indent controlam tipos diferentes de espaço. text-shadow: 1px 1px 2px rgb(0 0 0 / 0.5); fornece deslocamento horizontal, deslocamento vertical, desfoque e cor.

text-decoration adiciona sublinhados, linhas acima ou linhas através do texto. Também pode definir estilo e cor, como em underline wavy crimson. A espessura e o afastamento do sublinhado ajustam a linha. Leitores esperam que texto sublinhado seja um link, então reserve essa indicação para esse fim.

Estilize listas sem deixar recuos acidentais

list-style-type escolhe marcadores como disc, square, decimal ou lower-alpha. list-style-position: outside mantém marcadores fora do bloco de texto; inside os coloca na primeira linha, de modo que as linhas seguintes podem começar abaixo do marcador. list-style-image fornece um marcador de imagem, e li::marker pode colorir apenas o marcador.

Para uma lista de navegação simples, use .menu { list-style: none; margin: 0; padding: 0; }. Remover apenas os marcadores mantém o preenchimento interno padrão no lado inicial da lista. list-style: square inside é uma propriedade abreviada que combina configurações de marcador.

Mantenha links visíveis durante o uso

Ordene regras de estado com a mesma especificidade como link, visited, focus, hover, active. Um link pode estar visitado e com o ponteiro sobre ele; a ordem no código-fonte decide entre suas declarações de cor concorrentes. :active significa durante a ativação, não a página atual.

Mantenha links reconhecíveis por mais do que apenas a cor, geralmente com um sublinhado no corpo do texto. Dê ao foco do teclado um indicador claro:

a:focus-visible {
  outline: 3px solid #f2a900;
  outline-offset: 2px;
}

Não remova o contorno de foco a menos que outro estilo de foco visível o substitua. Um contorno não ocupa espaço no modelo de caixa, então essa indicação não desloca o texto ao redor.

Principais conclusões

  • Uma altura de linha sem unidade passa um multiplicador que acompanha o tamanho da fonte de cada filho.
  • text-align move conteúdo em linha dentro de um bloco, não o próprio bloco.
  • A transformação de maiúsculas e minúsculas altera a aparência sem alterar o texto HTML.
  • Remover marcadores de lista não remove o preenchimento interno padrão da lista.
  • Estados de links podem se sobrepor; mantenha o link reconhecível e o foco do teclado visível.
  • Contornos mostram o foco sem alterar as dimensões da caixa.

6.3 Imagens de fundo, dimensionamento e camadas

Um fundo fica atrás do conteúdo de uma caixa. Sua cor preenche o conteúdo e o preenchimento interno e se estende sob a borda; a margem permanece transparente. Uma imagem é desenhada sobre a cor de fundo, então uma cor pode fornecer uma superfície confiável enquanto a imagem carrega.

Resolva o caminho a partir da folha de estilo
.hero {
  background-color: #1a2b3c;
  background-image: url("../images/hero.jpg");
}

Se o CSS estiver em css/styles.css e a imagem estiver na pasta images no nível principal do site, .. sai de css antes de entrar em images. Uma URL de imagem CSS parte do arquivo CSS, diferentemente do link da folha de estilo, que parte do arquivo HTML. Verifique a requisição da imagem se uma regra válida exibir apenas sua cor alternativa.

Fundos são decoração. Um leitor de tela não os anuncia como imagens. Coloque uma imagem informativa no HTML com texto alternativo significativo. Uma cor alternativa próxima do tom principal da imagem também ajuda o texto a permanecer legível se a imagem demorar a carregar ou estiver ausente.

Controle repetição, escala e posição

Inicialmente, imagens se repetem em seu tamanho natural. no-repeat usa uma cópia; repeat-x cria uma linha e repeat-y, uma coluna. space distribui repetições inteiras com espaços, enquanto round as ajusta para caber um número inteiro.

TamanhoResultado
coverPreenche toda a caixa, preservando as proporções; pode haver recorte
containAjusta a imagem inteira, preservando as proporções; podem sobrar espaços
200px 100pxDefine ambas as dimensões explicitamente
50% autoDefine a largura relativa e preserva a proporção da imagem

Para uma caixa de 800px por 400px e uma imagem quadrada de 1000px, cover dimensiona a imagem para um quadrado de 800px, deixando 400px da altura da imagem fora da caixa. Contain a dimensiona para um quadrado de 400px; com no-repeat, 400px da largura da caixa permanecem descobertos. Definir apenas contain não desativa a repetição.

A posição inicial é o canto superior esquerdo. background-position: center centraliza uma imagem; right 20px bottom 10px a desloca a partir dessas bordas. O valor horizontal vem primeiro. Center junto com cover mantém o centro visível quando o recorte é necessário.

Gere e sobreponha imagens

Um gradiente é uma imagem, então coloque-o em background-image:

background-image: linear-gradient(to right, #1e90ff, #8a2be2);

A primeira cor fica à esquerda e a segunda à direita. Ângulos e pontos de cor posicionados dão mais controle; radial-gradient(circle, white, steelblue) se espalha para fora a partir do centro. Um gradiente em background-color é inválido.

Separe várias imagens com vírgulas; a primeira fica por cima. Um gradiente preto translúcido listado antes de uma foto pode escurecer a imagem sem tornar o texto transparente.

Use a propriedade abreviada de forma intencional

background: url("hero.jpg") center / cover no-repeat #1a2b3c; combina imagem, posição, tamanho, repetição e cor. O tamanho vem depois da posição, após uma barra. Apenas a última camada pode ter uma cor. Configurações de fundo omitidas são redefinidas, então um background: white; posterior remove uma imagem anterior.

background-attachment usa inicialmente scroll, movendo-se com o elemento enquanto a página rola. fixed mantém o fundo preso à área de visualização. Teste a caixa e o texto reais depois de adicionar decoração; o dimensionamento e o recorte não devem esconder informações necessárias aos leitores.

Principais conclusões

  • Caminhos de imagens CSS são resolvidos a partir da localização da folha de estilo.
  • cover preenche e pode recortar; contain ajusta a imagem inteira e pode deixar espaços.
  • Imagens de fundo se repetem, a menos que a repetição seja alterada.
  • Gradientes são imagens, e a primeira imagem de fundo é desenhada por cima.
  • A propriedade abreviada background usa uma barra entre posição e tamanho e redefine configurações omitidas.
  • Coloque imagens informativas no HTML; fundos servem como decoração.

6.4 Bordas, cantos arredondados, contornos e sombras

Uma borda faz parte do modelo de caixa. Um contorno ou uma sombra é desenhado ao redor da caixa sem reservar espaço adicional. Escolher entre eles altera tanto a aparência quanto o comportamento de dimensionamento de um estilo.

Dê um estilo à borda
.note {
  border: 1px solid #cccccc;
  border-left: 4px solid crimson;
  padding-left: 12px;
}

A propriedade abreviada define largura, estilo e cor; essas partes podem aparecer em qualquer ordem. O estilo de borda é inicialmente none, então definir apenas largura e cor não produz uma borda visível. Os estilos incluem solid, dashed, dotted, double, groove, ridge, inset e outset, além de none e hidden.

Se a largura for omitida, usa-se medium, geralmente 3px nos navegadores atuais. Se a cor for omitida, usa-se currentColor, acompanhando o texto do elemento. Propriedades abreviadas de lado, como border-top, e propriedades individuais, como border-left-color, permitem adicionar uma exceção depois de uma borda geral. Por exemplo, border-top: none remove apenas a borda superior depois de uma declaração de borda nos quatro lados.

No dimensionamento content-box, uma borda de 2px em cada lado acrescenta 4px à largura e à altura. Aumentar a largura da borda quando o ponteiro passa sobre o elemento pode, portanto, deslocar o conteúdo próximo. Mantenha a largura da borda estável e altere sua cor, ou use um contorno para uma indicação que não ocupe espaço. No dimensionamento border-box, uma borda mais espessa usa mais do interior da caixa declarada.

Arredonde cantos em uma ordem previsível

border-radius: 8px arredonda todos os cantos mesmo quando a própria borda está invisível. Com quatro valores, a ordem é superior esquerdo, superior direito, inferior direito, inferior esquerdo. Dois valores se aplicam a pares de cantos opostos: o primeiro ao superior esquerdo/inferior direito, o segundo ao superior direito/inferior esquerdo.

border-radius: 50% torna uma caixa quadrada circular e uma retangular elíptica. Seu próprio fundo é recortado nessa borda arredondada. O raio em si não recorta conteúdo filho que transborda; essa é uma decisão separada de transbordamento. O raio não aumenta as dimensões medidas da caixa.

Adicione uma linha de foco ou profundidade
.link:focus-visible {
  outline: 3px solid navy;
  outline-offset: 2px;
}

Um contorno é desenhado fora da borda e não ocupa espaço no layout. Seu afastamento cria um espaço a partir da borda. É uma indicação de foco útil porque pode aparecer sem mover caixas vizinhas.

box-shadow: 0 2px 6px rgb(0 0 0 / 0.2); fornece um deslocamento horizontal de zero, um deslocamento de 2px para baixo, desfoque de 6px e uma cor preta translúcida. Um valor de expansão opcional vem depois do desfoque. inset desenha a sombra dentro; valores separados por vírgulas adicionam várias sombras. Sombras seguem cantos arredondados e não acrescentam espaço ao modelo de caixa.

Verifique um cartão finalizado

Um cartão com width: 280px; padding: 16px; border: 1px solid #dddddd; tem 314px de largura no dimensionamento content-box. Adicione duas vezes 16px e duas vezes 1px a 280px. No dimensionamento border-box, ele continua com 280px, deixando 246px para o conteúdo. Um raio de canto de 12px e uma sombra suave não alteram nenhum dos cálculos. Eles alteram a borda desenhada, não as dimensões usadas para posicionar outras caixas.

Principais conclusões

  • Uma borda visível precisa de um estilo como solid.
  • Bordas participam do dimensionamento da caixa; contornos e sombras não reservam espaço adicional no layout.
  • Raios de canto seguem no sentido horário a partir do canto superior esquerdo, e formas mais curtas agrupam cantos em pares.
  • Um raio de 50% torna um quadrado circular e um retângulo elíptico.
  • Uma sombra da caixa lista deslocamentos horizontal e vertical, depois desfoque e expansão opcionais e, por fim, a cor.

Exercícios resolvidos de CSS

6 Lições Interativas

1

Faça uma folha de estilo funcionar e inspecione-a

10 passos
Vincule uma página ao CSS, acompanhe uma pequena regra e diagnostique uma alteração que não aparece.
  1. 1
    IntroduçãoDe um HTML com significado a uma página estilizada

    Um título e um parágrafo já têm estilos fornecidos pelo navegador. Você dará a eles uma fonte e uma cor escolhidas e depois acompanhará o resultado até o CSS.

    A primeira tarefa é criar uma conexão confiável entre arquivos. Depois disso, uma regra precisa corresponder ao elemento, conter uma declaração válida e prevalecer para a propriedade relevante. Trate essas etapas como verificações separadas quando a página não mudar.

  2. 2
    ExemploVincule um arquivo externo

    Suponha que index.html esteja ao lado de uma pasta chamada css, que contém styles.css. Adicione isto dentro do head do HTML:

    <link rel="stylesheet" href="css/styles.css">
    

    O caminho parte do arquivo HTML e entra na pasta CSS. Salvar regras nesse arquivo externo permite que outras páginas se vinculem ao mesmo design. Um caminho escrito incorretamente pode deixar o HTML legível enquanto nenhum desses estilos do autor é carregado.

  3. 3
    ExplicaçãoEscreva e leia uma regra

    Coloque isto na folha de estilo vinculada:

    p {
      color: navy;
      font-size: 18px;
    }
    

    p seleciona parágrafos. As chaves contêm duas declarações, cada uma associando uma propriedade a um valor. Os pontos e vírgulas separam as declarações. Recarregue a página: um parágrafo correspondente recebe texto azul-marinho e tamanho de fonte de 18px, a menos que uma declaração de prioridade maior altere uma dessas propriedades.

  4. 4
    DesafioCorrija um valor inválido

    Uma regra diz p { font-size: 18 px; color: teal; }. Preveja o efeito e corrija a declaração de tamanho.

    ---reveal---

    A cor verde-azulada pode ser aplicada, mas a declaração de tamanho é inválida porque o número e a unidade de uma medida de comprimento devem estar juntos. Altere-a para font-size: 18px;. O navegador ignora a declaração inválida, não o bloco inteiro, então uma cor que funciona não prova que o valor de tamanho foi aceito.

  5. 5
    Ideia-chaveObserve o que uma propriedade abreviada limpa

    Estas declarações não mantêm a foto:

    background-image: url("sky.jpg");
    background: lightblue;
    

    A propriedade abreviada redefine propriedades de fundo que omite, incluindo a imagem. Escreva primeiro uma propriedade abreviada geral e depois a exceção individual quando ambas devem ser mantidas. Isso explica uma alteração aparentemente válida que desaparece mesmo quando o caminho e o seletor estão corretos.

  6. 6
    ConexãoMantenha padrões úteis do navegador

    Títulos grandes, espaços entre parágrafos e marcadores de lista já estão presentes por causa da folha de estilo do agente de usuário. Suas regras modificam esse ponto de partida.

    body { margin: 0; } remove um espaço padrão específico. Redefinir todas as margens e preenchimentos internos também remove espaçamentos úteis entre parágrafos e recuos de listas. Escolha o nível de título HTML pelo significado e depois altere seu tamanho de fonte; escolher um nível de título menor apenas pela aparência altera a estrutura do documento.

  7. 7
    DicaInspecione uma propriedade antes de fazer suposições

    Clique com o botão direito no parágrafo e escolha Inspecionar. Procure sua regra em Estilos. Uma regra ausente sugere um problema de correspondência ou carregamento; um aviso sugere CSS inválido; uma declaração riscada perdeu na cascata.

    Computado mostra os valores resultantes e o diagrama de caixa. Teste uma alteração ali e depois salve-a em sua folha de estilo. Uma alteração feita apenas na inspeção é temporária e desaparece quando o navegador recarrega os arquivos salvos.

  8. 8
    DesafioExplique um recuo de lista que permanece

    Uma lista de navegação tem list-style: none, mas seus itens continuam recuados. A regra é válida e não está riscada. O que você deve inspecionar e alterar?

    ---reveal---

    Inspecione o preenchimento interno da lista. Remover marcadores não remove seu preenchimento interno padrão no lado inicial. Redefina esse preenchimento, geralmente com padding: 0, para remover o recuo; adicione espaçamento intencional depois, se o design precisar. A configuração do marcador e o espaçamento da caixa são propriedades separadas.

  9. 9
    DesafioAcompanhe a alteração que falhou

    Uma página ainda mostra o estilo padrão dos parágrafos. O painel Rede informa uma requisição com falha para styles.css, enquanto o arquivo real é css/styles.css. O que você deve corrigir primeiro e como deve verificar o resultado?

    ---reveal---

    Corrija o link da folha de estilo no HTML para css/styles.css. Recarregue, confirme que a requisição foi bem-sucedida e depois inspecione o parágrafo para encontrar sua regra correspondente. Aumentar a especificidade do seletor não ajuda enquanto a folha de estilo que o contém não está carregando.

  10. 10
    RecapitulaçãoUm caminho confiável para depuração

    Comece com uma declaração de tipo de documento HTML válida e uma folha de estilo vinculada corretamente. Uma regra precisa então de um seletor correspondente e de valores de propriedade válidos. Propriedades abreviadas podem redefinir propriedades individuais anteriores mesmo quando todas as declarações são válidas.

    Use Rede para verificar o carregamento, Estilos para correspondência e prioridade e Computado para dimensões finais. Salve os testes bem-sucedidos no arquivo CSS para que sejam mantidos ao recarregar a página. Os padrões do navegador continuam fazendo parte da explicação sempre que suas regras não alteram uma propriedade.

2

Leia seletores em relação à árvore HTML

12 passos
Selecione classes reutilizáveis, estados, partes e relações estruturais sem selecionar elementos adicionais.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoDescreva a correspondência desejada
  2. 2
    ExemploReutilize uma classe em vários elementos
  3. 3
    DesafioUm espaço muda o alvo
  4. 4
    DicaCompartilhe regras sem exigir aninhamento
  5. 5
    ExplicaçãoSelecione atributos e estados atuais
  6. 6
    ExemploConte irmãos, não apenas parágrafos
  7. 7
    DesafioEscolha um marcador sem substituir o texto
  8. 8
    ExplicaçãoEncontre filhos diretos em uma lista aninhada
  9. 9
    ExemploAcompanhe as duas relações entre irmãos
  10. 10
    DesafioObserve se o elemento pai é o mesmo
  11. 11
    DesafioCombine localização e estado
  12. 12
    RecapitulaçãoLeia o seletor como um teste de correspondência
3

Acompanhe um conflito da prioridade à herança

13 passos
Encontre as declarações que prevalecem, calcule a especificidade e diferencie valores locais de valores herdados.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoUm elemento pode ter várias declarações que prevalecem
  2. 2
    ExplicaçãoFiltre antes de comparar
  3. 3
    ExemploResolva uma cor em linha
  4. 4
    Ideia-chaveUse camadas antes de seletores mais fortes
  5. 5
    DesafioNomeie a etapa decisiva
  6. 6
    ExemploConte as partes do seletor por coluna
  7. 7
    ExplicaçãoTrate seletores funcionais
  8. 8
    DesafioCompare sem somar colunas
  9. 9
    ConexãoDeixe o texto herdar e as caixas permanecerem separadas
  10. 10
    ExplicaçãoEscolha a redefinição desejada
  11. 11
    DesafioSepare um filho do seletor de seu elemento pai
  12. 12
    DesafioAcompanhe a decisão completa
  13. 13
    RecapitulaçãoDê a cada decisão sua própria função
4

Escolha uma cor e calcule um tamanho relativo

10 passos
Interprete canais de cor e transparência e depois acompanhe referências de fonte, contêiner e área de visualização.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoLeia a referência por trás do valor
  2. 2
    ExemploDecodifique três canais de cor
  3. 3
    Ideia-chaveMantenha texto opaco sobre um preenchimento translúcido
  4. 4
    DesafioVerifique o limiar correto
  5. 5
    ExemploCalcule o tamanho do texto antes do espaçamento
  6. 6
    ConexãoEvite crescimento repetido em texto aninhado
  7. 7
    ExplicaçãoDê às porcentagens a referência correta
  8. 8
    DesafioAplique duas referências diferentes
  9. 9
    DesafioRelacione tamanho de fonte e contraste
  10. 10
    RecapitulaçãoEscolha o que o valor deve acompanhar
5

Meça um cartão e explique seus espaços

11 passos
Calcule os dois modelos de caixa e depois acompanhe o comportamento em linha, a centralização e o colapso de margens.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoComece pelo conteúdo e avance para fora
  2. 2
    ExplicaçãoNomeie as quatro camadas
  3. 3
    ExemploCalcule um cartão content-box
  4. 4
    ExemploAltere o que a largura inclui
  5. 5
    DesafioCorrija um transbordamento de largura total
  6. 6
    ConexãoFaça um link aceitar dimensões
  7. 7
    ExemploDivida o espaço horizontal restante
  8. 8
    Ideia-chaveCombine margens verticais
  9. 9
    DesafioPreveja um espaço com sinais diferentes
  10. 10
    DesafioRecalcule o cartão centralizado
  11. 11
    RecapitulaçãoMeça a camada que causa o problema
6

Crie texto legível e um cartão finalizado

15 passos
Defina uma fonte confiável, mantenha links utilizáveis e adicione fundos e bordas sem redefinições ou mudanças de tamanho inesperadas.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoDê uma finalidade a cada escolha visual
  2. 2
    ExplicaçãoEscolha uma lista de fontes alternativas confiável
  3. 3
    ExemploCarregue uma versão de fonte e mantenha o texto visível
  4. 4
    DesafioIdentifique uma redefinição da propriedade abreviada font
  5. 5
    ExemploMantenha o espaçamento entre linhas proporcional
  6. 6
    DicaMantenha menus e links compreensíveis
  7. 7
    DesafioSepare o bloco de seu conteúdo
  8. 8
    ExemploAcompanhe um caminho de fundo
  9. 9
    ExemploDimensione uma foto quadrada em uma caixa larga
  10. 10
    Ideia-chaveSobreponha uma tonalidade a uma foto
  11. 11
    DesafioPreserve a fotografia inteira
  12. 12
    ExplicaçãoDesenhe uma borda sem mover os elementos vizinhos
  13. 13
    DesafioArredonde a caixa e mantenha a medida
  14. 14
    DesafioFinalize um cartão interativo estável
  15. 15
    RecapitulaçãoRelacione a decoração às regras subjacentes

Questões de CSS

50 Questões de Prática em 5 conjuntos

Conjunto 1: Leia regras e preveja resultados simples10 Questões de Prática

Questão 1 de 10

Uma section tem font-size: 20px; line-height: 1.4;. Seu filho h2 tem font-size: 1.5em e nenhuma declaração de altura de linha. Quais são o tamanho da fonte e a altura da linha do título?
  1. Texto de 30px com linhas de 42px.
  2. Texto de 30px com linhas de 28px.
  3. Texto de 20px com linhas de 28px.
  4. Texto de 30px com linhas de 45px.
Mostrar respostaOcultar resposta
Resposta: A
O tamanho da fonte do título é 1,5 vez os 20px de seu elemento pai, então passa a ser 30px. Ele herda o multiplicador sem unidade 1,4 e o aplica ao próprio tamanho, resultando em linhas de 42px. Uma altura de linha de 28px resultaria da herança de uma medida computada fixa, não do número sem unidade usado aqui.

Questão 2 de 10

Um elemento tem class="panel featured". Qual seletor exige ambas as palavras de classe nesse mesmo elemento?
  1. .panel .featured
  2. .panel, .featured
  3. panel.featured
  4. .panel.featured
Mostrar respostaOcultar resposta
Resposta: D
Unir os dois seletores de classe sem espaço faz com que um elemento satisfaça ambas as condições. Um espaço selecionaria um descendente featured dentro de um panel, que é uma relação diferente. Uma vírgula permitiria qualquer uma das classes independentemente, então também alcançaria elementos que têm apenas uma das classes exigidas.

Questão 3 de 10

Um artigo contém um h2 e depois dois elementos p. O que article p:first-child seleciona?
  1. Apenas o primeiro parágrafo.
  2. Nenhum dos parágrafos.
  3. Apenas o segundo parágrafo.
  4. Ambos os parágrafos.
Mostrar respostaOcultar resposta
Resposta: B
:first-child verifica se o parágrafo é o primeiro elemento filho de seu elemento pai. O título ocupa essa posição, então nenhum dos parágrafos corresponde. Selecionar o primeiro parágrafo confundiria primeiro filho com primeiro do tipo; p:first-of-type expressaria essa outra solicitação neste artigo.

Questão 4 de 10

Duas regras normais do autor fora de camadas são .badge { color: teal; } seguida de .badge { color: maroon; }. Qual cor prevalece?
  1. Verde-azulado.
  2. Bordô.
  3. A cor do elemento pai.
  4. O padrão do navegador.
Mostrar respostaOcultar resposta
Resposta: B
Ambas as declarações têm a mesma origem, importância, condição de camada e especificidade de seletor. A declaração posterior, portanto, prevalece, resultando em bordô. Escolher verde-azulado trataria a primeira declaração como permanente, mas a ordem no código-fonte resolve esse empate em favor da última declaração aplicável.

Questão 5 de 10

Qual é a especificidade ID-CLASSE-TIPO de .panel > a:hover?
  1. 0-1-2
  2. 0-2-2
  3. 1-1-1
  4. 0-2-1
Mostrar respostaOcultar resposta
Resposta: D
A classe e a pseudoclasse hover acrescentam uma unidade cada à coluna CLASSE, e a acrescenta uma à coluna TIPO. O combinador de filho não acrescenta nada, então o resultado é 0-2-1. Contar o combinador como outro tipo resultaria incorretamente em 0-2-2; símbolos de relação não têm peso de especificidade.

Questão 6 de 10

Qual cor hexadecimal de seis dígitos equivale a #4bd?
  1. #44bbdd
  2. #40b0d0
  3. #444bdd
  4. #4b4bdd
Mostrar respostaOcultar resposta
Resposta: A
A forma hexadecimal de três dígitos se expande pela repetição de cada dígito em seu par de canal: 4 vira 44, b vira bb e d vira dd. O resultado é #44bbdd. Acrescentar zeros para formar #40b0d0 altera os valores dos canais, criando uma cor diferente em vez de expandir a forma abreviada.

Questão 7 de 10

Um elemento content-box tem width: 240px; padding: 12px; border: 3px solid; margin: 8px;. Qual é a largura de sua caixa até a borda?
  1. 240px.
  2. 255px.
  3. 270px.
  4. 286px.
Mostrar respostaOcultar resposta
Resposta: C
A largura do conteúdo é 240px, e os dois lados acrescentam 24px de preenchimento interno e 6px de borda, resultando em 270px. As margens laterais de 8px ficam fora da caixa até a borda. Incluí-las resultaria em 286px de espaço horizontal, uma medida diferente da largura solicitada.

Questão 8 de 10

Qual lista de fontes oferece opções nomeadas e uma alternativa genérica funcional?
  1. "Noto Sans", Arial, "sans-serif"
  2. "Noto Sans Arial", sans-serif
  3. "Noto Sans", "Arial sans-serif"
  4. "Noto Sans", Arial, sans-serif
Mostrar respostaOcultar resposta
Resposta: D
Os nomes de família são opções separadas por vírgulas, e a família genérica sans-serif sem aspas continua disponível quando as fontes nomeadas estão ausentes. Colocar essa família genérica entre aspas a transforma em um nome literal de fonte. A lista pode então perder a alternativa de categoria pretendida, embora a declaração ainda seja interpretada.

Questão 9 de 10

Uma regra contém color: 18px; padding: 12px;. O que acontece com essas declarações?
  1. Ambas as declarações são ignoradas.
  2. A cor é aplicada; o preenchimento é ignorado.
  3. A cor é ignorada; o preenchimento é aplicado.
  4. Ambas as declarações são aplicadas normalmente.
Mostrar respostaOcultar resposta
Resposta: C
18px é uma medida de comprimento, então não é um valor válido para color; o navegador ignora essa declaração. O valor do preenchimento interno é válido e continua sendo aplicado. Um valor inválido não invalida todas as declarações no mesmo bloco, por isso rejeitar ambas descartaria um estilo que funciona.

Questão 10 de 10

Uma página não tem CSS do autor, mas uma lista aparece recuada e seus itens têm marcadores. De onde vêm esses estilos?
  1. Da folha de estilo do agente de usuário do navegador.
  2. Das margens herdadas pelo texto da lista.
  3. Das declarações em linha do arquivo HTML.
  4. Da folha de estilo automática do editor.
Mostrar respostaOcultar resposta
Resposta: A
O navegador fornece CSS padrão para elementos HTML, incluindo marcadores e recuo de listas. Nenhuma folha de estilo do autor é necessária para que esses padrões apareçam. Margens normalmente não são herdadas, e os marcadores visíveis da lista não demonstram que o arquivo HTML contém declarações de estilo em linha.
Conjunto 2: Aplique seletores, espaçamento e decoração10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um parágrafo tem style="color: coral;" e corresponde a .notice { color: indigo !important; } no CSS do autor. Qual cor é usada?
  1. Coral.
  2. A cor do elemento pai.
  3. Índigo.
  4. O padrão do navegador.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

O tamanho da fonte de um elemento pai é 18px. Seu filho tem font-size: 1.5em; padding: 0.5em;. Quanto preenchimento interno é definido em cada lado?
  1. 9px.
  2. 27px.
  3. 13,5px.
  4. 36px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um link permanece uma caixa em linha comum, e width: 180px não afeta seu tamanho. Qual valor de display o mantém em nível de linha e permite essa largura?
  1. inline-block
  2. inline
  3. none
  4. block
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um cartão border-box tem width: 260px; padding: 18px; border: 2px solid;. Qual é a largura de sua área de conteúdo?
  1. 260px.
  2. 224px.
  3. 300px.
  4. 220px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma regra usa background-color: linear-gradient(white, navy);. Por que o gradiente não é mostrado?
  1. Um gradiente precisa de border-style.
  2. Um gradiente é um valor de imagem.
  3. Um gradiente precisa de um valor de repetição.
  4. Cores nomeadas são paradas inválidas.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Uma caixa tem border-width: 4px; border-color: teal; e nenhuma outra declaração de borda. Por que nenhuma borda fica visível?
  1. A largura inicial da borda é zero.
  2. O estilo inicial da borda é none.
  3. A cor da borda precisa de um valor alfa.
  4. A largura precisa do dimensionamento border-box.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

O CSS normal do autor declara @layer base, widgets;. Base contém #info { color: teal; }; widgets contém .card { color: maroon; }. Uma regra fora de camadas, p { color: navy; }, também corresponde a <p id="info" class="card">. Qual cor prevalece?
  1. Verde-azulado.
  2. Bordô.
  3. A cor herdada.
  4. Azul-marinho.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

O arquivo HTML é /site/pages/team.html; a folha de estilo é /site/css/theme.css. Qual href relativo alcança a folha de estilo?
  1. css/theme.css
  2. ../css/theme.css
  3. ../pages/theme.css
  4. ../../css/theme.css
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma section contém um h3, um p, um aside e depois outro p. O que h3 ~ p seleciona dentro dessa seção?
  1. Apenas o parágrafo seguinte.
  2. Apenas o parágrafo final.
  3. O título e ambos os parágrafos.
  4. Ambos os parágrafos irmãos.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um elemento pai corresponde a #article { color: olive; }, e seu parágrafo filho corresponde a p { color: purple; }. Qual cor o parágrafo usa?
  1. Roxo de sua própria regra.
  2. Oliva do ID do elemento pai.
  3. Oliva até que uma classe seja adicionada.
  4. A cor padrão do navegador.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Acompanhe valores em estruturas reais de páginas10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma declaração funciona depois que você a edita nas ferramentas do desenvolvedor, mas a alteração desaparece após recarregar a página. O que você deve fazer para mantê-la?
  1. Salvar a declaração que funciona na folha de estilo.
  2. Salvar uma captura de tela do painel Estilos.
  3. Recarregar novamente com o mesmo elemento selecionado.
  4. Mover o elemento para outro elemento pai no HTML.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma regra .alert.urgent não corresponde a <p class="alert"><span class="urgent">Update</span></p>. Qual seletor seleciona o span urgente apenas quando ele está dentro de um alerta?
  1. .alert.urgent
  2. .alert, .urgent
  3. .alert .urgent
  4. p.alert.urgent
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um link tem href="manual.PDF". Qual seletor corresponde a um final PDF independentemente de maiúsculas ou minúsculas?
  1. a[href^=".pdf" i]
  2. a[href=".pdf" i]
  3. a[href~=".pdf" i]
  4. a[href$=".pdf" i]
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma div class="tools" contém um ul direto com o link A dentro de um li, além de uma section que contém outro ul com o link B. O ponteiro está sobre ambos os links. A que .tools > ul a:hover corresponde?
  1. Apenas ao link B.
  2. Apenas ao link A.
  3. A ambos os links A e B.
  4. A nenhum dos links A e B.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Duas declarações normais do autor na mesma camada usam #menu a e .menu a.selected. Ambas correspondem a um link. Qual seletor tem maior especificidade?
  1. #menu a
  2. .menu a.selected
  3. Ambos têm a mesma especificidade.
  4. O ancestral mais próximo decide.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

O CSS do autor define div { display: initial; }. Qual valor de display a div recebe dessa declaração?
  1. block
  2. inline-block
  3. none
  4. inline
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma legenda usa background-color: rgb(0 0 0 / 0.5); color: white; sobre uma foto. Uma pessoa desenvolvedora substitui o fundo com alfa por preto opaco e adiciona opacity: 0.5 à legenda. O que muda?
  1. Apenas o fundo permanece translúcido.
  2. O texto também fica parcialmente transparente.
  3. O texto também fica preto e opaco.
  4. A foto passa a fazer parte da legenda.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um bloco de referência tem 420px de largura e 300px de altura. Em que valor padding-top: 10% é resolvido em seu filho?
  1. 30px.
  2. 10px.
  3. 42px.
  4. 72px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

No fluxo normal de blocos, duas margens verticais adjacentes entram em colapso: a primeira é 26px e a segunda é −9px. Qual espaço resulta?
  1. 26px.
  2. 35px.
  3. 17px.
  4. −9px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Uma foto quadrada é usada uma vez, sem repetição, atrás de um banner de 900px por 300px. O que acontece com background-size: contain; background-position: center;?
  1. Uma imagem quadrada de 300px deixa espaços de 300px em cada lado.
  2. Uma imagem quadrada de 900px perde 300px no topo e na base.
  3. Uma imagem de 900px por 300px preenche o banner ao ser esticada.
  4. Uma imagem quadrada de 300px deixa todos os 600px à direita.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Resolva estilos concorrentes e caixas que mudam10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma lista de navegação tem list-style: none;, mas seus itens ainda estão recuados. Qual regra adicional remove o recuo padrão?
  1. text-indent: 0;
  2. list-style-position: inside;
  3. text-align: start;
  4. padding: 0;
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Qual comentário CSS pode identificar um grupo de regras com segurança?
  1. // Article styles
  2. <!-- Article styles -->
  3. # Article styles
  4. /* Article styles */
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma regra h2, p..lead, blockquote { color: teal; } não altera nenhum desses elementos. O que explica o resultado?
  1. Uma vírgula exige que todos os seletores correspondam a um elemento.
  2. Um seletor inválido invalida a lista comum de seletores.
  3. O seletor blockquote cancela o seletor de título.
  4. Uma lista não pode misturar seletores de classe e de tipo.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma section contém <h2>News</h2><aside><p>A</p></aside><p>B</p><p>C</p>. Qual texto é selecionado por h2 + p e por h2 ~ p, respectivamente?
  1. A; B e C.
  2. B; B e C.
  3. Nenhum; B e C.
  4. Nenhum; A, B e C.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

O CSS do autor declara @layer foundations, details;. Foundations tem .flag { color: teal !important; }; details tem #notice { color: purple !important; }; uma regra fora de camadas tem p { color: navy !important; }. Todas correspondem a um parágrafo. Qual cor prevalece?
  1. Verde-azulado.
  2. Roxo.
  3. Azul-marinho.
  4. A cor do elemento pai.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Uma cor de texto em tamanho normal sobre branco tem contraste medido de 4,2:1. Qual é seu resultado de contraste no nível AA das WCAG?
  1. Atende ao mínimo para texto normal.
  2. Não atende porque todo texto precisa de 7:1.
  3. Atende apenas porque o fundo é branco.
  4. Não atende ao mínimo para texto normal.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um filho content-box tem width: 100%; padding: 0 15px; em uma área de conteúdo de 480px de largura, sem bordas ou margens. Qual é a largura de sua caixa até a borda?
  1. 480px.
  2. 510px.
  3. 495px.
  4. 450px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

A caixa até a borda de um cartão tem 360px de largura. Sua regra é width: 320px; padding: 18px; border: 2px solid; com dimensionamento content-box. Ela deve continuar com 360px de largura depois de mudar para border-box e aumentar o preenchimento interno para 24px. Quais são a largura declarada e a largura do conteúdo resultantes?
  1. 360px declarados; 308px de conteúdo.
  2. 320px declarados; 268px de conteúdo.
  3. 360px declarados; 312px de conteúdo.
  4. 372px declarados; 320px de conteúdo.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um elemento recebe primeiro font-weight: 700; font-style: italic; e depois font: 1.25rem/1.4 Arial, sans-serif;. Quais peso e estilo são aplicados após a propriedade abreviada?
  1. Peso em negrito e estilo em itálico.
  2. Peso normal e estilo em itálico.
  3. Peso normal e estilo normal.
  4. Peso em negrito e estilo normal.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um link de bloco em linha usa dimensionamento content-box com uma borda de 1px. Ao passar o ponteiro, deve mostrar uma indicação mais forte enquanto preserva a largura do conteúdo e todas as dimensões da caixa. Qual alteração atende a esse requisito?
  1. Aumentar a largura da borda para 3px.
  2. Adicionar um contorno de 3px ao passar o ponteiro.
  3. Mudar para o dimensionamento border-box.
  4. Adicionar 2px de preenchimento interno em cada lado.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 5: Diagnostique e explique combinações desconhecidas10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma requisição de folha de estilo é bem-sucedida. Sua regra aparece para um span inspecionado, e width: 160px é válido e não está riscado, mas o span continua tendo apenas a largura de seu texto. O que explica isso?
  1. A requisição usou a folha de estilo errada.
  2. O span herda uma largura do elemento pai.
  3. O span é uma caixa em linha comum.
  4. A margem do span esconde sua largura.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma lista tem exatamente oito filhos li e nenhum outro elemento filho. Quais posições de filhos correspondem a li:nth-child(3n+2)?
  1. 2, 5 e 8.
  2. 3 e 6.
  3. 1, 4 e 7.
  4. 2, 4, 6 e 8.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Todas as declarações são regras normais do autor fora de camadas. Um link dentro de <section id="main"> corresponde a :where(#main) a { color: teal; }, :is(#spare, section) a { color: purple; } e depois .chosen:hover { color: navy; }. Ele tem a classe chosen e o ponteiro está sobre ele. Qual cor prevalece?
  1. Verde-azulado.
  2. Azul-marinho.
  3. A cor herdada.
  4. Roxo.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um contêiner tem color: maroon; background-color: beige;. Seu filho tem color: unset; background-color: unset; e nenhum outro estilo relevante. Quais são os valores de cor e fundo do próprio filho?
  1. Texto bordô e fundo bege.
  2. Texto bordô e fundo transparente.
  3. Cor inicial do texto e fundo transparente.
  4. Cor inicial do texto e fundo bege.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

A fonte da raiz é 20px e um contêiner tem 700px de largura. Seu filho border-box tem width: calc(100% - 4rem); padding: 1em; border: 2px solid; font-size: 1.5rem;. Qual é a largura do conteúdo do filho?
  1. 620px.
  2. 556px.
  3. 576px.
  4. 616px.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um bloco de 500px de largura não tem preenchimento interno nem borda. Seu filho também não tem preenchimento interno nem borda e é um bloco comum com width: 320px; margin: 0 auto; text-align: center;. Quais margens horizontais e alinhamento de texto resultam?
  1. 180px de cada lado; texto centralizado.
  2. 90px de cada lado; texto alinhado ao início.
  3. Margens laterais zero; texto centralizado.
  4. 90px de cada lado; texto centralizado.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma fonte web é declarada com @font-face { font-family: "Lumen Sans"; src: url("fonts/lumen-regular.woff2") format("woff2"); }. Qual nome uma lista de fontes deve usar para solicitar essa versão?
  1. "Lumen Sans"
  2. "lumen-regular"
  3. "lumen-regular.woff2"
  4. "fonts/lumen-regular.woff2"
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Regras de link de mesma especificidade definem primeiro a:hover { color: teal; } e depois a:visited { color: purple; }. O ponteiro está sobre um link visitado. Qual alteração torna sua cor verde-azulada enquanto o ponteiro está sobre ele, preservando a cor roxa de visitado quando não está?
  1. Colocar a regra de visitado depois da regra de hover.
  2. Definir roxo no elemento pai do link.
  3. Colocar a regra de hover depois da regra de visitado.
  4. Substituir :hover por :active na primeira regra.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma página em /site/index.html vincula /site/css/main.css. Esse CSS usa background-image: url("images/banner.jpg");, mas a imagem está em /site/images/banner.jpg. Uma regra posterior também define background: navy;. Qual correção mantém o azul-marinho atrás da imagem?
  1. Alterar apenas a URL para ../images/banner.jpg, mantendo a ordem existente.
  2. Alterar apenas a propriedade abreviada para background-color: navy, mantendo a URL existente.
  3. Escrever background: navy; antes de background-image: url("images/banner.jpg");.
  4. Escrever background: navy; antes de background-image: url("../images/banner.jpg");.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Uma caixa retangular mede 160px por 80px e tem border-radius: 50%. Qual forma arredondada seu fundo assume?
  1. Um círculo.
  2. Uma elipse.
  3. Um quadrado arredondado.
  4. Uma pílula com laterais retas.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

84 Termos-Chave, cada um com sua definição

A

Afastamento do contorno
O afastamento do contorno define o espaço entre o contorno de um elemento e sua borda, alterando a indicação desenhada sem mudar as dimensões da caixa.
Um afastamento de 2px separa um contorno de foco da borda de um link para que as duas linhas permaneçam visualmente distintas.
Alfa
Alfa é o componente de opacidade de um valor de cor, que vai de totalmente transparente em zero a totalmente opaco em um ou 100%.
Um fundo com metade do alfa pode revelar uma foto atrás dele enquanto o texto do elemento permanece totalmente opaco.
Alinhamento do texto
O alinhamento do texto posiciona o conteúdo em linha de um bloco dentro do espaço de suas linhas, com opções como start, end, center e justify.
Centralizar o texto dentro de um parágrafo de largura total não torna sua caixa mais estreita nem move suas extremidades.
Altura da linha
A altura da linha define a altura usada para uma linha de texto; um valor sem unidade age como multiplicador do tamanho da fonte do próprio elemento.
Com texto de 20px, uma altura de linha sem unidade de 1,5 resulta em linhas de 30px e pode se ajustar adequadamente a filhos maiores.

Á

Área de conteúdo
A área de conteúdo é a parte interna da caixa de um elemento que contém seu texto, imagem ou conteúdo filho, dentro do preenchimento interno e da borda.
Uma largura content-box de 300px deixa todos os 300px para o conteúdo antes que o preenchimento interno seja adicionado às dimensões externas.

B

Borda
Uma borda é a extremidade estilizada ao redor da área de preenchimento interno de uma caixa, com largura, estilo e cor que participam do dimensionamento da caixa.
Duas bordas laterais de 2px acrescentam 4px à largura content-box de um cartão, mesmo quando uma sombra suave também é desenhada ao redor desse cartão.

C

Caixa de bloco
Uma caixa de bloco normalmente começa em uma nova linha, aceita dimensões e preenche a largura disponível de seu contêiner quando sua largura é auto.
Um parágrafo pode usar largura máxima e margens laterais automáticas enquanto mantém o texto alinhado à esquerda em seu interior.
Caixa de bloco em linha
Uma caixa de bloco em linha participa de uma linha de texto enquanto aceita dimensões explícitas e reserva espaço vertical para o espaçamento de sua caixa.
Um link de navegação pode ganhar espaço clicável com preenchimento interno sem forçar cada link a ocupar uma linha separada.
Caixa em linha
Uma caixa em linha comum flui dentro de uma linha de texto e recebe sua largura do conteúdo, ignorando largura e altura explícitas.
Um span não passa a ter 200px de largura apenas porque uma regra atribui width: 200px enquanto ele permanece em linha.
Camada de cascata
Uma camada de cascata é um grupo nomeado de regras com prioridade explícita em relação a outras camadas, comparada antes da especificidade dos seletores.
Uma classe normal da camada de componentes pode prevalecer sobre uma regra baseada em ID da camada base quando a camada de componentes vem depois.
Camada de fundo
Uma camada de fundo é uma imagem em uma lista de fundos separados por vírgulas, sendo a primeira imagem listada desenhada sobre as posteriores.
Uma cor abaixo de todas as camadas de imagem pode permanecer visível através de partes transparentes e espaços descobertos.
Cascata
A cascata é o processo ordenado que escolhe a declaração que prevalece para cada propriedade de cada elemento quando regras CSS competem.
Um parágrafo pode receber sua cor de uma regra de classe e seu tamanho de fonte de uma regra separada de seletor de tipo.
Colapso de margens
O colapso de margens combina certas margens verticais adjacentes de blocos em uma só, usando os maiores valores positivo e negativo em magnitude.
Margens positivas adjacentes de 18px e 30px que entram em colapso criam um espaço de 30px, enquanto margens horizontais permanecem separadas.
Combinador de irmão adjacente
O combinador de irmão adjacente, +, seleciona um elemento correspondente imediatamente depois de outro quando ambos compartilham o mesmo elemento pai.
O seletor h2 + p alcança um parágrafo de abertura, mas deixa de corresponder quando um aside aparece entre eles.
Combinador de irmãos subsequentes
O combinador de irmãos subsequentes, ~, seleciona irmãos posteriores correspondentes de um elemento, permitindo outros irmãos entre eles.
O seletor h2 ~ p pode alcançar dois parágrafos separados por um aside quando todos compartilham o elemento pai do título.
Conteúdo gerado
Conteúdo gerado é texto ou uma caixa decorativa criada por pseudoelementos CSS em vez de escrita como um nó de conteúdo HTML.
Um asterisco adicionado com ::after precisa de um valor de content; instruções essenciais permanecem no HTML.
Contorno
Um contorno é uma linha desenhada fora da borda de uma caixa sem reservar espaço adicional no layout, frequentemente usada para indicar o foco do teclado.
Um link pode receber um contorno de foco de 3px sem afastar o texto próximo como faria uma borda content-box maior.
Cor atual
A palavra-chave currentColor representa a própria cor do texto do elemento quando outra propriedade de cor precisa de um valor correspondente.
Uma borda que usa currentColor muda com a cor do texto quando uma regra de hover atualiza apenas color.
Cor hexadecimal
Uma cor hexadecimal escreve valores dos canais vermelho, verde e azul na base 16, com um par adicional opcional para a transparência da cor.
Expandir #3ac resulta em #33aacc porque cada dígito se torna um par repetido para seu próprio canal.
Cor HSL
Uma cor HSL descreve a matiz como um ângulo junto com saturação e luminosidade em porcentagem, oferecendo outra notação para uma cor.
Manter a matiz fixa enquanto aumenta a luminosidade pode transformar um azul escuro em uma versão clara desse azul.
Cor RGB
Uma cor RGB especifica as quantidades de luz vermelha, verde e azul, geralmente como números de canal de 0 a 255 em rgb().
O valor rgb(30 144 255) fornece as mesmas quantidades de canais que o valor hexadecimal de seis dígitos #1e90ff.
CSS
CSS é uma linguagem que descreve a apresentação de elementos HTML, incluindo suas cores, fontes, espaçamento, bordas e fundos.
Uma página pode manter a mesma estrutura de títulos enquanto outra folha de estilo altera suas cores e fontes.

D

Declaração
Uma declaração é uma propriedade CSS e um valor unidos por dois-pontos, que definem uma parte da aparência de um elemento dentro de uma regra.
Em color: navy;, a declaração define a cor do texto, e o ponto e vírgula a separa da próxima configuração.
Declaração importante
Uma declaração importante é uma declaração CSS marcada com !important, que lhe dá prioridade sobre declarações normais da mesma origem.
Uma cor importante do autor pode prevalecer sobre uma cor normal em linha mesmo quando o seletor da folha de estilo é apenas p.
Decoração do texto
A decoração do texto desenha linhas, como sublinhado ou tachado, no texto, com configurações opcionais de estilo, cor e espessura.
Um link pode manter um sublinhado como indicação reconhecível enquanto uma regra de hover aumenta apenas a espessura da linha.
Descendente
Um descendente é um elemento aninhado em qualquer nível dentro de outro elemento, diretamente ou por meio de um ou mais elementos intermediários.
O seletor nav a alcança um link de navegação mesmo quando uma lista e um item de lista ficam entre ele e o nav.
Dimensionamento da caixa
O dimensionamento da caixa determina se uma largura ou altura declarada mede apenas a área de conteúdo ou também inclui preenchimento interno e borda.
Mudar um cartão de largura total com preenchimento interno para border-box pode fazer sua largura externa caber novamente no contêiner.

E

Especificidade
Especificidade é o peso ID-CLASSE-TIPO de um seletor, usado para comparar declarações concorrentes depois que suas prioridades anteriores na cascata empatam.
Um seletor de ID pode prevalecer sobre muitas classes no mesmo grupo de prioridade porque a coluna ID é comparada primeiro.
Estado de foco visível
O estado de foco visível corresponde a um elemento com foco quando o navegador determina que o leitor precisa de um indicador de foco visível.
Uma pessoa que usa teclado pode ver um contorno no link selecionado por a:focus-visible antes de ativá-lo.
Estado do link
Um estado do link é uma condição de correspondência, como não visitado, visitado, com foco, com o ponteiro sobre ele ou ativo, que pode selecionar um link para estilização.
Um link visitado também pode estar com o ponteiro sobre ele, então a ordem de regras de cor com a mesma especificidade afeta sua aparência.

F

Família genérica de fontes
Uma família genérica de fontes nomeia uma categoria ampla de fontes para uso como alternativa pelo navegador, como serif, sans-serif, monospace ou system-ui.
Colocar sans-serif entre aspas transforma-o em um nome literal de fonte e remove sua função de alternativa genérica da lista.
Filho
Um filho é um elemento aninhado diretamente dentro de um elemento pai, sem outro elemento entre os dois na árvore HTML.
O seletor .menu > li deixa de fora itens cujo elemento pai é uma lista aninhada separada dentro do menu.
Folha de estilo
Uma folha de estilo é um conjunto de regras CSS que um navegador aplica a um documento, frequentemente armazenado em um arquivo separado e compartilhado por várias páginas.
Um link HTML para css/styles.css permite que uma página carregue seus estilos do arquivo na pasta vizinha.
Folha de estilo do agente de usuário
Uma folha de estilo do agente de usuário é o conjunto de regras CSS embutido no navegador que dá aos elementos HTML sua aparência padrão.
Títulos grandes e listas recuadas aparecem em uma página HTML simples antes que um autor adicione uma folha de estilo.
Fonte variável
Uma fonte variável armazena uma faixa de variações de fonte, como pesos, em um único recurso em vez de exigir um arquivo estático por versão.
Um arquivo de fonte variável pode fornecer vários pesos solicitados quando sua faixa declarada os abrange.
Fonte web
Uma fonte web é um recurso de fonte baixado para uso em uma página, permitindo que um design ofereça uma versão não instalada no dispositivo do leitor.
Uma página pode mostrar primeiro uma fonte alternativa e depois exibir a fonte web escolhida quando o arquivo WOFF2 termina de carregar.
Função calc()
A função calc() combina valores CSS compatíveis em uma expressão, permitindo que uma medida de comprimento misture quantidades relativas e absolutas.
O valor calc(100% - 40px) subtrai uma quantidade fixa de uma largura relativa ao contêiner, com espaços ao redor do sinal de menos.

G

Gradiente
Um gradiente é uma imagem gerada pelo navegador com cores que mudam ao longo de uma linha ou para fora de um centro, usada como valor de imagem.
Um gradiente translúcido listado antes de uma foto pode escurecê-la sem aplicar opacidade ao texto sobreposto.

H

Herança
Herança é o processo pelo qual um elemento recebe o valor de seu elemento pai para uma propriedade herdada quando nenhum valor local o substitui.
A família de fontes de um body pode alcançar parágrafos comuns sem outra declaração de fonte em cada parágrafo.

I

Imagem de fundo
Uma imagem de fundo é uma imagem decorativa desenhada atrás do conteúdo de uma caixa e sobre sua cor de fundo, com tamanho e repetição controláveis.
Uma foto CSS pode falhar ao carregar enquanto a caixa mantém sua cor alternativa e o texto permanece no documento.
Irmão
Um irmão é um elemento que compartilha o mesmo elemento pai com outro; combinadores de irmãos usam sua ordem na árvore HTML.
Um parágrafo dentro de um aside não é irmão de um título fora do aside, mesmo que pareçam adjacentes.

L

Lista de fontes alternativas
Uma lista de fontes alternativas é uma lista ordenada de famílias de fontes que permite ao navegador recorrer a outra família quando uma preferida não está disponível.
Uma lista que termina com sans-serif sem aspas ainda fornece uma fonte adequada em um dispositivo sem as fontes nomeadas.
Lista de seletores
Uma lista de seletores é um grupo de seletores separados por vírgulas que compartilham um bloco de declarações enquanto correspondem a elementos independentemente.
A regra para h1, h2, h3 pode dar aos três níveis de título uma família de fontes sem exigir aninhamento.

M

Marcador de lista
Um marcador de lista é o símbolo, número ou outro indicador associado a um item de lista, estilizado por propriedades de lista ou por ::marker.
Mudar um marcador para um quadrado não remove o recuo padrão separado do contêiner da lista.
Margem
Uma margem é o espaço transparente fora da borda de uma caixa, usado para separá-la das caixas vizinhas e excluído da largura declarada.
Um fundo não pode colorir o espaço criado por uma margem, então um espaçamento interno colorido precisa de preenchimento interno.
Margem automática
Uma margem horizontal automática absorve o espaço restante ao lado de um bloco, permitindo que margens laterais automáticas iguais centralizem uma caixa mais estreita.
Um bloco que já preenche seu contêiner não pode se mover visivelmente quando ambas as margens laterais são definidas como auto.
Modo de padrões
O modo de padrões é o modo de renderização de documentos do navegador que segue os padrões web modernos, selecionado por uma declaração de tipo de documento HTML válida.
Colocar <!DOCTYPE html> no início evita o comportamento antigo que pode afetar uma página no modo de compatibilidade.

O

Ordem no código-fonte
A ordem no código-fonte é a sequência de declarações conforme o CSS é encontrado, resolvendo um conflito apenas depois que as comparações anteriores da cascata empatam.
Dois seletores de classe idênticos que definem cor em uma camada deixam a declaração posterior como vencedora.
Origem do estilo
Uma origem do estilo identifica se o CSS vem do autor, do leitor ou do navegador, formando uma etapa da prioridade na cascata.
Uma regra normal do autor pode substituir o tamanho padrão de um título no navegador sem igualar o peso de seu seletor.

P

Painel Estilos
O painel Estilos é uma visualização das ferramentas do desenvolvedor que mostra as regras correspondentes a um elemento selecionado, incluindo declarações que perdem na cascata.
Uma cor riscada no painel Estilos ajuda a explicar por que um parágrafo exibe o valor de outra regra.
Palavra-chave inherit
A palavra-chave inherit atribui explicitamente a uma propriedade o valor computado do elemento pai, mesmo quando essa propriedade normalmente não é herdada.
Definir font: inherit em controles pode substituir a fonte atribuída pelo navegador pela fonte do texto ao redor.
Palavra-chave initial
A palavra-chave initial seleciona o valor inicial de uma propriedade na especificação CSS, independentemente da regra padrão do elemento HTML.
Aplicar display: initial a uma div resulta em exibição inline, embora o navegador normalmente a torne block.
Palavra-chave revert
A palavra-chave revert reverte uma propriedade para antes da origem de estilo atual, revelando um valor aplicável de uma origem inferior.
Uma regra do autor com display: revert pode restaurar a exibição block normalmente atribuída pelo navegador a uma div.
Palavra-chave revert-layer
A palavra-chave revert-layer reverte o valor de uma propriedade para antes da camada de cascata atual, permitindo que uma fonte de prioridade inferior o forneça.
Uma camada de componentes pode liberar sua configuração de cor e deixar a cor correspondente de uma camada base anterior aparecer novamente.
Palavra-chave unset
A palavra-chave unset segue a herança normal para uma propriedade herdada e usa o valor inicial para uma propriedade não herdada.
Usar unset em color pode preservar a cor do texto do elemento pai, enquanto usá-lo em margin remove uma margem local.
Pixel CSS
Um pixel CSS é uma medida absoluta de referência usada na estilização de páginas, que pode corresponder a vários pixels físicos em uma tela de alta densidade.
Uma fonte de 16px pode manter um tamanho pretendido semelhante mesmo quando duas telas têm densidades diferentes de pixels do dispositivo.
Porcentagem
Uma porcentagem CSS expressa uma proporção de uma referência determinada pela propriedade, como a largura do contêiner ou o tamanho da fonte do elemento pai.
Um preenchimento interno superior de 10% em um contêiner de 500px de largura usa essa largura e é resolvido como 50px, independentemente da altura.
Posição da imagem de fundo
A posição da imagem de fundo coloca uma imagem dentro de sua área de fundo usando palavras-chave, medidas de comprimento ou porcentagens, com a posição horizontal primeiro.
Uma imagem cover centralizada distribui o recorte necessário ao redor de seu centro em vez de manter apenas o canto superior esquerdo.
Preenchimento interno
Preenchimento interno é o espaço entre o conteúdo de uma caixa e sua borda, que recebe o fundo da caixa e contribui para suas dimensões.
Aumentar o preenchimento interno de um cartão cria espaço colorido ao redor de seu texto em vez de um espaço externo transparente.
Propriedade abreviada
Uma propriedade abreviada define várias propriedades CSS relacionadas de uma vez e redefine as propriedades individuais abrangidas que seu valor não especifica.
Escrever background: white; pode remover uma foto atribuída anteriormente por background-image.
Pseudoclasse
Uma pseudoclasse é uma condição de seletor que corresponde ao estado ou à posição estrutural de um elemento, escrita com um par de dois-pontos.
A pseudoclasse :checked pode selecionar uma caixa de seleção cujo estado marcado atual não é representado por uma classe.
Pseudoclasse estrutural
Uma pseudoclasse estrutural seleciona elementos de acordo com sua posição entre irmãos, como o primeiro filho ou um filho a cada dois.
Um parágrafo depois de um título é o primeiro parágrafo, mas não corresponde a p:first-child.
Pseudoelemento
Um pseudoelemento seleciona uma parte de um elemento ou cria uma parte gerada para estilização, sendo escrito por convenção com dois pares de dois-pontos.
Uma regra para li::marker pode colorir marcadores de lista enquanto mantém a cor existente do texto do item.

R

Raio de arredondamento da borda
Um raio de arredondamento da borda arredonda os cantos de uma caixa sem aumentar suas dimensões, com valores que podem variar entre os quatro cantos.
Um raio de 50% torna uma caixa quadrada circular, enquanto o mesmo valor em um retângulo produz uma elipse.
Razão de contraste
Uma razão de contraste compara a luminância relativa das cores de primeiro plano e de fundo para medir sua diferença visível entre claro e escuro.
Texto com contraste de 2,85:1 não atende aos limiares mínimos do nível AA das WCAG para texto normal nem para texto grande.
Redefinição de estilos
Uma redefinição de estilos é um conjunto de regras CSS que remove padrões selecionados do navegador para que um design possa estabelecer seus próprios estilos iniciais consistentes.
Uma regra que remove todo o preenchimento interno também remove o recuo da lista, que o design pode precisar restaurar.
Regra @font-face
Uma regra @font-face atribui um nome de família CSS e características de versão a um recurso de fonte que pode ser usado em uma lista de fontes alternativas.
A declaração de família deve corresponder ao nome escolhido na regra, não ao nome de arquivo que aparece em sua URL de origem.

S

Seletor composto
Um seletor composto combina condições de correspondência sem um combinador, exigindo que um elemento satisfaça todas elas.
O seletor p.note alcança um parágrafo com a classe note, enquanto p .note solicita um descendente.
Seletor de atributo
Um seletor de atributo corresponde a um elemento pela presença de um atributo ou por uma condição sobre seu valor, usando a sintaxe de colchetes.
O seletor a[href$=".pdf" i] pode estilizar links de documentos mesmo quando a extensão do arquivo está em maiúsculas.
Seletor de classe
Um seletor de classe corresponde a elementos cujo atributo class, separado por espaços, contém a palavra nomeada pelo seletor, tornando o estilo reutilizável.
O seletor .notice corresponde tanto a um aviso simples quanto a um elemento com class="card notice".
Seletor de especificidade zero
Um seletor de especificidade zero não contribui com peso para uma comparação de seletores; :where() também remove o peso de seus argumentos.
O seletor :where(#main) p continua fácil de sobrescrever porque apenas o parágrafo contribui com um ponto de tipo.
Seletor de ID
Um seletor de ID corresponde ao ID único de um elemento e contribui com mais especificidade que seletores de classe em uma regra concorrente.
Um seletor que usa #site-header pode ser mais difícil de sobrescrever depois do que um que usa uma classe reutilizável de cabeçalho.
Seletor de tipo
Um seletor de tipo corresponde a elementos por seu nome HTML, permitindo que uma regra CSS se aplique a todos os elementos de um tipo selecionado.
O seletor p pode estabelecer o espaçamento dos parágrafos em toda a página sem atribuir uma classe a cada um.
Seletor universal
O seletor universal, *, corresponde a todos os elementos, mas contribui com especificidade zero, sendo útil em padrões abrangentes e redefinições de estilos.
Uma regra para * pode redefinir margens, enquanto um seletor de classe pode fornecer espaçamento depois, com maior especificidade.
Sombra da caixa
Uma sombra da caixa desenha uma sombra externa ou interna usando deslocamentos, desfoque e expansão opcionais e cor, sem acrescentar espaço ao modelo de caixa.
Um cartão pode ganhar uma sombra suave e manter a mesma largura computada da caixa até a borda e a mesma posição entre seus vizinhos.

T

Tamanho da imagem de fundo
O tamanho da imagem de fundo controla as dimensões renderizadas de uma imagem de fundo, com cover e contain preservando suas proporções.
Cover pode recortar a parte superior e inferior de uma foto quadrada em uma caixa larga; contain pode deixar espaços ao lado dela.
Transbordamento
Transbordamento é o conteúdo que se estende além das dimensões permitidas de uma caixa, controlado por valores como visible, hidden, scroll e auto.
Um bloco de código com overflow: auto pode permitir a rolagem de sua linha longa sem tornar a página inteira mais larga.
Transformação de maiúsculas e minúsculas
A transformação de maiúsculas e minúsculas altera a capitalização exibida do texto por meio do CSS sem reescrever o texto armazenado no HTML.
Um rótulo em maiúsculas pode vir de HTML com capitalização normal, preservando o texto original no documento.
Tripla ID-CLASSE-TIPO
Uma tripla ID-CLASSE-TIPO registra contagens de IDs, seletores semelhantes a classes e seletores semelhantes a tipos em três colunas comparadas separadamente.
O seletor a[href]:hover tem a tripla 0-2-1, com o atributo e hover contados como CLASSE.

U

Unidade ch
Um ch é uma medida de comprimento relativa à fonte, baseada na largura de avanço do caractere zero, frequentemente usada para limitar a largura de colunas de texto.
Um parágrafo com max-width: 65ch acompanha o tamanho da fonte sem prometer exatamente 65 letras por linha.
Unidade em
Um em é uma medida de comprimento relativa à fonte que usa o tamanho da fonte do elemento pai para font-size e o tamanho da fonte do próprio elemento nas demais propriedades.
Depois que o valor computado do texto de um filho chega a 20px, seu preenchimento interno de 2em passa a ser 40px em vez de acompanhar novamente o elemento pai.
Unidade relativa à área de visualização
Uma unidade relativa à área de visualização mede uma proporção da área de visualização do navegador, com vw usando a largura e vh usando a altura como referência.
Um valor de 10vh é 80px quando a altura da área de visualização é 800 pixels CSS, mesmo dentro de um contêiner mais baixo.
Unidade rem
Um rem é uma medida de comprimento relativa ao tamanho da fonte do elemento raiz, fornecendo uma referência compartilhada entre elementos aninhados na página.
Vários itens aninhados em 1.25rem mantêm o mesmo tamanho de texto quando compartilham um tamanho de raiz inalterado.

V

Valor computado
Um valor computado é o valor de uma propriedade após o navegador resolver suas regras de cascata e computação, antes de algumas resoluções que dependem do layout.
As ferramentas do desenvolvedor podem mostrar que um tamanho de fonte em em se torna pixels, enquanto uma largura em porcentagem depende do layout.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar