Linguagem de Folha de Estilo

CSS

CSS é a linguagem que controla a aparência e o layout do seu HTML na tela. Veja o que ela é, como funciona e como começar a usá-la hoje mesmo.

beginner14 min readUpdated 15 de set. de 2026
styles.css
css
/* styles.css */
:root {
  --brand: #2563eb;
}

.card {
  padding: 1.5rem;
  border-radius: 0.75rem;
  background: var(--brand);
  color: white;
}
Nome completo
Cascading Style Sheets
Criado por
Håkon Wium Lie, 1996
Tipo
Linguagem de folha de estilo
Padrão
W3C Living Standard
Extensão do arquivo
.css

Pratico

Experimente CSS ao vivo

Edite o HTML e o CSS para ver suas alterações em tempo real.

Experimente CSS ao vivo

Edite o HTML e o CSS para ver suas alterações em tempo real.

Por que importa

Por que o CSS é importante

Acessibilidade

O CSS controla a apresentação visual — tamanhos de fonte, espaçamento, indicadores de foco e layouts responsivos dependem de estilos bem escritos que tornam o conteúdo utilizável para todos.

Controle de design

De cores e tipografia a animações e layout, o CSS oferece controle preciso sobre a aparência e o comportamento de cada elemento na página.

Performance

Um CSS limpo e bem organizado carrega rápido, renderiza de forma eficiente e é mais fácil de manter — resultando em folhas de estilo menores e páginas mais fluidas.

O panorama completo

As três ideias por trás do CSS

Seletores escolhem os elementos, a cascata decide qual regra vence e o box model controla o espaço que eles ocupam.

Seletores

Correspondência

Escolhem a quais elementos uma regra se aplica — por tag, classe, atributo, estado ou relação.

A cascata

Resolução

Quando regras colidem, origem, especificidade e ordem decidem qual declaração vence.

O modelo de caixa

Tamanho

Todo elemento é uma caixa de conteúdo, padding, borda e margem — é assim que ocupa espaço.

CSS em resumo

O que o CSS oferece

Design visual

Cores, fontes, espaçamento e efeitos de fundo.

Sistemas de layout

Flexbox e CSS Grid para arranjos de página complexos.

Design responsivo

Media queries adaptam layouts para qualquer tamanho de tela.

Animações

Transições e animações de keyframe sem a necessidade de JavaScript.

Propriedades customizadas

Variáveis CSS para valores reutilizáveis e tematizáveis.

Suporte à acessibilidade

Estilos de foco, modos de alto contraste e redução de movimento.

Uma breve historia

De gambiarras com tabelas ao layout moderno

  1. 1996

    CSS1

    Håkon Wium Lie propõe o CSS e o W3C publica a primeira especificação.

    96
  2. 1998

    CSS2

    Adiciona posicionamento, z-index, tipos de mídia e maior controle de layout.

    98
  3. 2011

    CSS2.1

    Esclarece e corrige o CSS2 — a versão que a maioria dos desenvolvedores aprendeu primeiro.

    11
  4. 2012

    Módulos CSS3

    Dividido em módulos independentes — Flexbox, Grid, animações e outros são lançados individualmente.

    12
  5. 2017

    Chegada do CSS Grid

    O suporte dos navegadores atinge a massa crítica e o Grid transforma o layout de páginas.

    17
  6. Hoje

    Living standard

    Novos recursos como container queries, :has() e subgrid chegam continuamente.

    Hoje

O guia completo

CSS: Tudo que voce precisa saber

O que é CSS?

CSS significa Cascading Style Sheets (Folhas de Estilo em Cascata). É a linguagem padrão utilizada para controlar a aparência dos elementos HTML na tela. Cada cor, fonte, decisão de espaçamento, arranjo de layout e animação na web é definida pelo CSS.

Enquanto o HTML descreve o que é o conteúdo — um título, um parágrafo, uma imagem — o CSS descreve como ele aparece: qual a cor desse título, qual o tamanho da fonte, quanto espaço envolve o parágrafo e se a imagem flutua à esquerda ou fica em um grid. Essa separação é o núcleo do desenvolvimento web. O HTML fornece a estrutura, o CSS fornece a apresentação e o JavaScript fornece o comportamento. Cada camada tem uma função, e mantê-las separadas torna as páginas mais fáceis de construir, testar e manter.

A melhor maneira de pensar no CSS é como a pintura e a mobília de uma página. O HTML é a casa — as paredes, os cômodos e as portas — e o CSS decide a cor das paredes, onde cada móvel fica e como tudo parece visualmente. Sem o CSS, toda página seria apenas texto preto em um fundo branco. O CSS é o que torna a web visualmente rica.

Como o CSS funciona

O CSS funciona através de um sistema de seletores, propriedades e valores. Um seletor alveja um elemento HTML, uma propriedade é o aspecto que você deseja alterar e um valor é a definição que você atribui a ela:

/* style.css */
h1 {
  color: blue;
  font-size: 2rem;
}

Aqui, h1 é o seletor — ele informa ao navegador qual elemento deve ser estilizado. color e font-size são propriedades — as coisas que você pode alterar. blue e 2rem são os valores — as definições que você atribui a elas. Todo o bloco, desde a chave de abertura até a de fechamento, é chamado de bloco de declaração ou conjunto de regras.

Quando um navegador carrega uma página, ele analisa o HTML para criar o DOM e, em seguida, aplica as regras de CSS a ele. Cada regra diz “encontre estes elementos e faça-os parecer com isto”. O navegador avalia cada regra, resolve conflitos através da cascata e da especificidade, e renderiza o resultado final. Esse processo acontece toda vez que a página é carregada e novamente sempre que os estilos são alterados.

Formas de adicionar CSS

Existem três maneiras de incluir CSS em uma página web, cada uma com seu próprio caso de uso:

Estilos inline

Aplique CSS diretamente a um elemento usando o atributo style:

<!-- index.html -->
<p style="color: red; font-size: 1.2rem;">This text is red.</p>

Estilos inline são úteis para experimentos rápidos ou sobrescritas pontuais, mas eles misturam a apresentação com a estrutura e são difíceis de manter em escala. Evite-os em produção.

Folha de estilo interna

Coloque um bloco <style> dentro do <head> do seu documento HTML:

<!-- index.html -->
<head>
  <style>
    h1 {
      color: navy;
    }
  </style>
</head>

Estilos internos funcionam bem para protótipos de página única ou quando uma página precisa de estilos exclusivos que nenhuma outra página utiliza. Eles ainda ficam limitados a um único documento, portanto, compartilhar estilos entre páginas exige repetição.

Folha de estilo externa

Vincule um arquivo .css separado usando o elemento <link>:

<!-- index.html -->
<head>
  <link rel="stylesheet" href="styles.css" />
</head>

Esta é a abordagem padrão para sites em produção. Um único arquivo CSS pode estilizar todas as páginas, o navegador o armazena em cache após o primeiro carregamento e seu HTML permanece limpo. A maioria dos projetos utiliza folhas de estilo externas.

Seletores CSS

Os seletores são a forma como você indica ao CSS quais elementos devem ser estilizados. Dominar os seletores é uma das habilidades de maior impacto no CSS, pois seletores precisos significam menos markup, menos overrides e folhas de estilo mais limpas.

Seletor de elemento

Alvo em todas as instâncias de um elemento HTML:

/* style.css */
p {
  line-height: 1.6;
}

Seletor de classe

Alvo em elementos com um atributo class específico. Classes são reutilizáveis e são a forma mais comum de estilizar grupos de elementos:

/* style.css */
.card {
  padding: 1rem;
  border: 1px solid #e2e8f0;
}

Seletor de ID

Alvo em um único elemento com um id específico. IDs são únicos dentro de uma página e possuem maior especificidade do que as classes:

/* style.css */
#hero {
  background: linear-gradient(135deg, #667eea, #764ba2);
}

Seletor de atributo

Alvo em elementos com base em seus atributos ou valores de atributos:

/* style.css */
a[target="_blank"] {
  color: #dc2626;
}

input[type="email"] {
  border-color: #3b82f6;
}

Seletor de pseudo-classe

Alvo em elementos em um estado específico — como ao passar o mouse (hover), quando estão com foco, o primeiro filho ou o n-ésimo item de uma lista:

/* style.css */
a:hover {
  text-decoration: underline;
}

li:first-child {
  font-weight: bold;
}

input:focus {
  outline: 2px solid #3b82f6;
}

Seletores combinados

Os seletores podem ser combinados para maior precisão. Um espaço seleciona descendentes, um > seleciona filhos diretos e um + seleciona o próximo irmão:

/* style.css */
nav a {
  color: white;
}

nav > ul {
  list-style: none;
}

h2 + p {
  margin-top: 0;
}

A cascata e a especificidade

Quando múltiplas regras de CSS miram o mesmo elemento, o navegador precisa de uma maneira de decidir qual delas vence. Esse processo é chamado de cascata e segue uma ordem clara de prioridade.

Hierarquia de especificidade

A especificidade é calculada a partir de quatro níveis, avaliados da esquerda para a direita:

  1. Estilos inlinestyle="..." — prioridade máxima
  2. IDs#header
  3. Classes, atributos e pseudo-classes.nav, [type="text"], :hover
  4. Elementos e pseudo-elementosdiv, ::before — prioridade mínima

Uma regra com um seletor de ID sempre vence uma regra que possui apenas seletores de classe, independentemente de quantos seletores de classe a segunda regra tenha. Quando a especificidade é igual, a regra que aparece por último no código vence.

A cascata

Além da especificidade, a cascata considera:

  • Origem — os padrões do navegador, os estilos do autor e os estilos do usuário possuem cada um um nível. Estilos do autor vencem os padrões do navegador; !important em estilos de usuário podem sobrescrever estilos do autor.
  • Herança — algumas propriedades como color, font-family e line-height são herdadas por elementos filhos. Outras como margin, padding e border não são.
  • !important — adicionar !important a uma declaração sobrescreve todas as outras declarações com a mesma propriedade, independentemente da especificidade. Use com moderação, pois isso quebra a cascata natural e torna a depuração mais difícil.

Dicas práticas

  • Mantenha a especificidade baixa preferindo classes em vez de IDs.
  • Evite !important, a menos que esteja criando uma camada de utilitários ou sobrescrevendo uma folha de estilo de terceiros.
  • Quando um estilo não for aplicado, verifique a cascata: inspecione o elemento, veja quais regras coincidem e qual delas venceu.

Fundamentos do box model

Todo elemento HTML é uma caixa retangular, e o box model descreve como o seu tamanho é calculado. Existem quatro camadas, de dentro para fora:

  1. Content — o texto, imagem ou elementos filhos dentro da caixa.
  2. Padding — espaço transparente entre o conteúdo e a borda.
  3. Border — uma linha visível que envolve o padding.
  4. Margin — espaço transparente fora da borda, que afasta o elemento de seus vizinhos.

Por padrão, width e height definem apenas a área de conteúdo. Adicionar padding e border aumenta o tamanho total da caixa. A propriedade box-sizing: border-box altera esse comportamento para que a largura e a altura incluam o padding e a border, o que torna o layout muito mais previsível:

/* reset.css */
*,
*::before,
*::after {
  box-sizing: border-box;
}

Para se aprofundar em como o box model afeta o layout, consulte o guia dedicado ao box model.

Fundamentos do Flexbox

Flexbox é um sistema de layout unidimensional projetado para organizar itens em uma linha ou coluna. Ele torna o alinhamento, o espaçamento e a distribuição de espaço entre os itens simples, mesmo quando seus tamanhos são desconhecidos ou dinâmicos.

Para ativar o flexbox, defina display: flex em um container:

/* style.css */
.container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}

As principais propriedades são:

  • flex-direction — row, row-reverse, column ou column-reverse.
  • justify-content — alinhamento ao longo do eixo principal (start, end, center, space-between, space-around).
  • align-items — alinhamento ao longo do eixo transversal (start, end, center, stretch).
  • gap — espaço entre itens flexíveis sem a necessidade de margens.
  • flex-wrap — define se os itens devem quebrar para uma nova linha quando houver overflow.

O Flexbox é ideal para barras de navegação, linhas de cards, centralização de conteúdo e qualquer layout onde os itens fiquem em uma única linha ou coluna. Para layouts bidimensionais, o CSS Grid é a melhor escolha. Consulte o guia dedicado ao flexbox para saber mais.

Fundamentos do CSS Grid

O CSS Grid é um sistema de layout bidimensional que gerencia linhas e colunas simultaneamente. É a ferramenta de layout mais poderosa do CSS e foi projetada para estruturas de nível de página e layouts de componentes complexos.

Para ativar o grid, defina display: grid em um container e determine as colunas e linhas:

/* style.css */
.page {
  display: grid;
  grid-template-columns: 250px 1fr 250px;
  grid-template-rows: auto 1fr auto;
  gap: 2rem;
}

As principais propriedades são:

  • grid-template-columns — define as trilhas de coluna. Use unidades fr, repeat() e auto-fit/auto-fill para grids responsivos.
  • grid-template-rows — define as trilhas de linha.
  • gap — espaço entre os itens do grid.
  • grid-area — posiciona itens em regiões nomeadas do grid.
  • grid-column e grid-row — expande itens por múltiplas trilhas.

O Grid combina muito bem com media queries para criar layouts responsivos que se reorganizam naturalmente. Para um passo a passo completo, consulte o guia dedicado ao CSS Grid.

Design responsivo com media queries

Design responsivo significa que sua página tem uma boa aparência e funciona bem em qualquer dispositivo — celulares, tablets, laptops e monitores grandes. Media queries são a ferramenta que o CSS utiliza para aplicar estilos com base na largura, altura do viewport ou outras características do dispositivo.

/* responsive.css */
/* Base styles for mobile */
.container {
  padding: 1rem;
}

/* Tablet and above */
@media (min-width: 768px) {
  .container {
    padding: 2rem;
    max-width: 720px;
    margin: 0 auto;
  }
}

/* Desktop */
@media (min-width: 1024px) {
  .container {
    max-width: 960px;
  }
}

A abordagem acima é chamada de mobile-first: você escreve os estilos base para telas pequenas e os aprimora progressivamente com queries min-width. Isso resulta em um CSS mais enxuto, melhor performance no mobile e uma progressão natural de layouts simples para complexos.

Outros recursos úteis de media queries incluem:

  • max-width — aplica estilos abaixo de um breakpoint.
  • prefers-color-scheme — detecta o modo escuro (dark mode).
  • prefers-reduced-motion — respeita as preferências do usuário quanto a animações.
  • orientation — responde à orientação retrato (portrait) vs paisagem (landscape).

Combine media queries com unidades flexíveis como %, rem, em e fr para layouts que se adaptam de forma fluida.

Propriedades customizadas do CSS

Propriedades customizadas do CSS — também chamadas de variáveis CSS — permitem que você armazene valores reutilizáveis e os referencie em toda a sua folha de estilo. Elas são declaradas com -- e acessadas com var():

/* variables.css */
:root {
  --color-primary: #2563eb;
  --color-text: #1e293b;
  --space-md: 1rem;
  --font-body: system-ui, sans-serif;
}

body {
  color: var(--color-text);
  font-family: var(--font-body);
}

.button {
  background: var(--color-primary);
  padding: var(--space-md);
}

As propriedades customizadas têm escopo no elemento onde são declaradas e cascateiam para os filhos, o que as torna ideais para a criação de temas. Você pode sobrescrevê-las dentro de uma media query, uma classe ou um atributo de dados para alternar temas sem duplicar regras:

/* variables.css */
[data-theme="dark"] {
  --color-primary: #60a5fa;
  --color-text: #f1f5f9;
}

Elas também suportam valores de fallback: var(--color-primary, #2563eb). As propriedades customizadas são um dos recursos mais práticos do CSS moderno e devem fazer parte de todo projeto.

Boas práticas

Um bom CSS não consiste em memorizar cada propriedade — trata-se de escrever estilos que sejam previsíveis, sustentáveis e fáceis de estender. Estes hábitos aplicam-se a projetos de qualquer tamanho:

  • Use folhas de estilo externas para qualquer coisa que não seja um protótipo rápido.
  • Prefira seletores de classe em vez de seletores de elemento ou ID para a estilização.
  • Mantenha a especificidade baixa para que as sobrescritas sejam raras e intencionais.
  • Use propriedades customizadas de CSS para cores, espaçamento e tipografia.
  • Siga uma convenção de nomenclatura consistente — BEM, classes de utilitários ou um sistema como Tailwind CSS.
  • Escreva estilos responsivos mobile-first com min-width media queries.
  • Use box-sizing: border-box em todos os projetos.
  • Evite !important — isso esconde bugs em vez de corrigi-los.
  • Organize os estilos logicamente: estilos base, componentes, utilitários.
  • Teste em múltiplos navegadores e em diversos tamanhos de viewport.
  • Use o inspetor do DevTools do navegador para depurar problemas de layout rapidamente.

Erros comuns

  • Usar estilos inline em vez de classes para ajustes pontuais.
  • Depender excessivamente de !important para forçar a aplicação de estilos.
  • Escrever seletores excessivamente específicos e impossíveis de sobrescrever.
  • Não definir box-sizing: border-box, resultando em larguras imprevisíveis.
  • Duplicar valores de cores e espaçamento em vez de usar propriedades customizadas.
  • Ignorar o design responsivo e assumir que todos os usuários utilizam desktop.
  • Escrever estilos desktop-first com max-width em vez de mobile-first.
  • Misturar convenções de nomenclatura ou não possuir nenhum sistema de nomes.
  • Esquecer de testar no modo escuro ou com a opção de redução de movimento ativada.
  • Deixar estilos não utilizados na folha de estilo, aumentando o tamanho do arquivo sem necessidade.

Ainda vale a pena aprender CSS em 2026?

Com certeza. O CSS não vai a lugar nenhum — todo site, web app e progressive web app é renderizado através dele. O CSS moderno possui container queries, o seletor :has(), subgrid, cascade layers e nesting nativo. Ele está mais poderoso do que nunca. Frameworks como Tailwind, Bootstrap e bibliotecas de CSS-in-JS abstraem o CSS, mas nunca o substituem; entender os fundamentos torna você mais rápido e eficaz com qualquer um deles. Como primeira linguagem de estilização, ele é imbatível: você vê resultados visuais em minutos, a curva de aprendizado é suave e qualquer habilidade posterior em desenvolvimento frontend se beneficia de um conhecimento sólido de CSS. Aprenda-o adequadamente uma vez e você o usará pelo resto da sua carreira.

Como aprender CSS

O CSS é acessível para começar e infinitamente profundo para dominar. Um caminho prático:

  1. Aprenda o box model, seletores e a cascata.
  2. Construa uma página simples com cores, fontes e espaçamentos.
  3. Aprenda flexbox e utilize-o para navbars, linhas de cards e centralização.
  4. Aprenda CSS Grid para layouts de página e designs bidimensionais.
  5. Adicione design responsivo com media queries.
  6. Use custom properties para um design system consistente.
  7. Estude acessibilidade — estilos de foco, contraste e redução de movimento.
  8. Construa projetos: uma landing page, o layout de um blog, um dashboard — até que os padrões se tornem automáticos.

A partir daí, explore animações, Grid avançado, container queries e funcionalidades modernas. Nosso tutorial interativo de CSS guia você por cada etapa com exercícios práticos.

Sobrescrevendo um estilo

Mantenha a especificidade baixa e use classes. !important é o último recurso e torna sobrescritas futuras mais difíceis.

Prefira
.button--danger {
  background: #dc2626;
}
Evite
button {
  background: #dc2626 !important;
}

Estilizando um elemento

Uma classe reutilizável é mais fácil de manter do que um estilo inline espalhado pela marcação.

Prefira
<a class="nav-link" href="/docs">Docs</a>
Evite
<a style="color: #60a5fa; text-decoration: none"
   href="/docs">Docs</a>

Perguntas frequentes

Perguntas frequentes

Keep learning

Related topics from the roadmap.

$ comecar a aprender

Pronto para aprender CSS Basics?

Nosso tutorial interativo te guia por CSS Basics passo a passo — com quizzes e codigo real que voce pode executar no navegador.