CSS: a aparência, separada do conteúdo
O CSS é a segunda tecnologia que roda sem instalar nada. Você escreve um segundo arquivo de texto, liga ele ao HTML com uma linha, e a página inteira muda de cara sem que uma palavra do conteúdo seja tocada. Essa separação é a ideia que sustenta o resto do front end.
O que CSS resolve
Uma página só com HTML aparece do jeito que o navegador decidiu. Abrimos uma aqui em 15/08/2026 no Chromium: Times New Roman preta sobre fundo branco, texto ocupando os 1264 pixels da janela de ponta a ponta, lista com bolinha. Ninguém escolheu nada disso.
Para mudar a aparência dentro do próprio HTML, você teria que repetir a decoração elemento por elemento, em cada arquivo. Trocar a cor do site viraria uma edição de centenas de páginas, e uma delas ficaria pra trás. O CSS tira essas decisões do HTML e guarda todas num arquivo só, que serve quantas páginas você quiser.
Os conceitos que você precisa antes da primeira linha
- Regra, seletor e declaração. Uma declaração é um par de propriedade e valor separados por dois-pontos, como
color: red;. As declarações ficam dentro de chaves, e o seletor na frente diz a quais elementos elas se aplicam. Seletor mais bloco de declarações formam uma regra. - Os três lugares onde o estilo pode morar. Num arquivo
.cssà parte ligado pela tag<link>, dentro de uma tag<style>no<head>, ou no atributostylede um elemento. O arquivo à parte é o único que atende várias páginas de uma vez. - Cascata e especificidade. Quando duas regras brigam pela mesma propriedade, o navegador conta o peso do seletor em três colunas: ID, classe e tipo. Compara da esquerda para a direita, e uma coluna de ID vence qualquer quantidade das outras duas. A ordem no arquivo só entra como desempate quando as três colunas empatam.
- Herança. Algumas propriedades descem sozinhas para os elementos de dentro. Você escreve a fonte e a cor uma vez no
bodye os parágrafos herdam. Outras propriedades não descem, como borda e margem, e você precisa dizer explicitamente em quem elas valem. - Box model. Cada elemento é uma caixa com quatro camadas: conteúdo,
padding,borderemargin. No modelo padrão,widthvale para a área de conteúdo, e o padding e a borda somam por fora. Foi por isso que a coluna demax-width: 640pxdo teste abaixo mediu 680 pixels na tela, com os 20 de padding de cada lado.
A linguagem por dentro: seletores, cascata e a caixa
CSS também não é linguagem de programação: é linguagem de regras de estilo. Cada regra tem um seletor (em quem aplicar) e um bloco de declarações (o que aplicar). O nome da linguagem está na palavra cascata: quando duas regras disputam o mesmo elemento, vence a mais específica, e no empate vence a que veio por último.
- Os três seletores do dia a dia: por elemento (
p), por classe (.card) e por id (#menu). Especificidade cresce nessa ordem, e é por isso que estilizar por classe é o padrão: dá pra sobrescrever sem guerra. - Todo elemento é uma caixa: conteúdo,
padding(respiro interno),borderemargin(distância dos vizinhos). Metade dos layouts quebrados da vida é alguém confundindo padding com margin. - Variáveis existem aqui também: as custom properties. Declare
--cor-marca: #0EA5E9;uma vez e usevar(--cor-marca)em todo lugar, e o site inteiro muda num ponto só. - Layout moderno é flex e grid:
display: flexalinha itens numa direção.display: gridmonta linhas e colunas. Os dois aposentaram os truques com float que você ainda vai ver em código antigo.
:root { --cor-marca: #0EA5E9; } /* variável */
.card { /* seletor de classe */
border: 1px solid var(--cor-marca);
padding: 16px; /* respiro interno da caixa */
margin: 0 auto; /* centraliza a caixa */
display: flex;
gap: 12px; /* espaço entre os itens */
}
.card:hover { background: #E0F2FE; } /* estado */
Leia qualquer CSS de produção e você vai ver esses quatro assuntos o tempo todo: seletor, caixa, variável e flex/grid. O resto é vocabulário que se aprende sob demanda.
Hello world: sua primeira folha de estilo
De novo sem editor especial, sem servidor e sem conexão. Um editor de texto e um navegador bastam.
-
Abra a pasta onde está o
ola.htmldo tutorial de HTML. Se você não tem esse arquivo, crie um com este conteúdo:<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8" /> <title>Minha primeira página</title> </head> <body> <h1>Olá, mundo</h1> <p>Esta página está no meu computador e o navegador entendeu a estrutura dela.</p> <ul> <li>Um item</li> <li>Outro item</li> </ul> <p><a href="https://xentory.com.br/aprenda/stack-web/">Voltar para o mapa</a></p> </body> </html> -
Na mesma pasta, crie um arquivo novo e salve como
estilo.css, com este conteúdo:body { background-color: #f5f5f0; color: #1a1a1a; font-family: system-ui, sans-serif; line-height: 1.6; max-width: 640px; margin: 40px auto; padding: 0 20px; } h1 { color: #0b62d6; font-size: 2rem; } ul { list-style: square; } a { color: #0b62d6; } -
Volte ao
ola.htmle acrescente uma linha dentro do<head>, logo abaixo do<title>:<link rel="stylesheet" href="estilo.css" />Salve os dois arquivos.
-
Dê dois cliques no
ola.html. Ele abre no navegador, agora com o seu estilo. -
Na mesma pasta, crie um segundo arquivo e salve como
estilo-noite.css:body { background-color: #12141a; color: #e8e8e8; font-family: Georgia, serif; line-height: 1.9; max-width: 640px; margin: 40px auto; padding: 0 20px; } h1 { color: #7ec8ff; font-size: 2.8rem; } ul { list-style: none; padding-left: 0; } a { color: #7ec8ff; } -
No
ola.html, mude uma palavra só na linha do<link>:<link rel="stylesheet" href="estilo-noite.css" />Salve e recarregue a página no navegador com F5.
ola.html aberto do lado. Com estilo.css: fundo bege claro, letra sem serifa, coluna estreita centralizada, "Olá, mundo" em azul, lista com marcador quadrado. Com estilo-noite.css: fundo quase preto, texto claro, letra serifada Georgia, o mesmo "Olá, mundo" em azul claro e bem maior, lista sem marcador nenhum, linhas mais espaçadas. E o ponto que importa: "Olá, mundo", "Um item" e "Outro item" continuam com as mesmas letras nas mesmas tags, porque no HTML você trocou apenas o endereço dentro do href. Se nada mudou entre as duas telas, o navegador não achou o arquivo de estilo: confira se ele está na mesma pasta e se o nome no href bate com o nome salvo, sem .txt pendurado no fim.O que CSS não é
CSS não é uma pilha de regras em que a última escrita sempre vence. Quando duas regras disputam a mesma propriedade, o navegador pesa o seletor antes de olhar a posição no arquivo. Um seletor com ID ganha de um com dez classes, mesmo estando cinquenta linhas acima. A ordem no arquivo entra depois, só para desempatar seletores de peso idêntico.
Isso explica o sintoma mais comum de quem está começando: a regra nova aparentemente não pega, e a saída vira !important em tudo. O que está acontecendo quase sempre é outro seletor mais específico ganhando a disputa. Vale abrir o inspetor do navegador e ler qual regra o navegador aplicou, com a que perdeu riscada logo abaixo.
Fontes
- MDN Web Docs, CSS, onde o CSS é definido como a linguagem que descreve a apresentação de um documento escrito em HTML ou XML. Conferida em 15/08/2026.
- MDN Web Docs, sintaxe do CSS, de onde vieram as definições de declaração, bloco de declarações, seletor e regra. Conferida em 15/08/2026.
- MDN Web Docs, primeiros passos com CSS, de onde saiu a forma de ligar a folha de estilo ao HTML com a tag
<link>. Conferida em 15/08/2026. - MDN Web Docs, especificidade, com a conta das três colunas de ID, classe e tipo, e a regra de que a ordem no arquivo só desempata. Conferida em 15/08/2026.
- MDN Web Docs, box model, com as quatro camadas da caixa e a diferença entre o modelo padrão e
box-sizing: border-box. Conferida em 15/08/2026. - W3C, CSS, a casa das especificações e do estado de cada módulo. Conferida em 15/08/2026.
O hello world desta página rodou em 15/08/2026: os três arquivos foram salvos numa pasta, servidos em 127.0.0.1 e abertos no Chromium via Playwright. Sem a linha do <link>, o navegador aplicou Times New Roman preta e a caixa do corpo mediu 1264 pixels. Com estilo.css, o fundo veio rgb(245, 245, 240), a fonte system-ui, o corpo 680 pixels e o h1 em rgb(11, 98, 214) a 32 pixels, com marcador square. Trocando só o href para estilo-noite.css, o fundo virou rgb(18, 20, 26), a fonte Georgia, o h1 foi para rgb(126, 200, 255) a 44,8 pixels e o marcador da lista sumiu, com o texto da página idêntico nas duas leituras.
Para continuar
Se você pulou direto pra cá, o HTML vem antes e leva dez minutos. O passo seguinte é JavaScript, que faz a página reagir ao que a pessoa clica, e que pode trocar a folha de estilo sozinho, sem você editar o arquivo. Os três juntos abrem o resto do mapa.
O curso desta trilha está em preparação. A lista paga menos.
Os tutoriais daqui continuam gratuitos. O que está a caminho é um curso pago que transforma esse mapa em formação guiada, na ordem certa e com projeto. Deixe seu e-mail: você recebe os estudos novos gratuitos e, no lançamento, o desconto de quem entrou na lista primeiro.