Guia completo de CSS3 para desenvolvimento web moderno e responsivo
📖 Definição
CSS3 é a terceira versão das Cascading Style Sheets, a linguagem de estilo usada para descrever a apresentação de documentos HTML. CSS3 introduziu módulos, animações, transições e recursos avançados de layout.
💪 Por que aprender?
• Design responsivo e adaptativo
• Animações e transições nativas
• Layout modernos (Flexbox, Grid)
• Variáveis e funções avançadas
• Compatibilidade cross-browser
🚀 O que você pode fazer?
• Interfaces web modernas
• Design responsivo
• Animações e micro-interações
• Layouts complexos
• Temas e personalização
React, Vue, Angular
Responsive Design
Grid, Flexbox, Variables
Animations, Transitions
🎯 Seletores Básicos
Use quando: Precisa selecionar e estilizar elementos HTML básicos
📋Seletores de Elemento
p { color: blue; }# Seleciona todos os parágrafos
h1 { font-size: 2em; }# Seleciona todos os h1
div { margin: 10px; }# Seleciona todas as divs
span { display: inline; }# Seleciona todos os spans
📋Seletores de Classe
.classe { color: red; }# Seleciona elementos com classe
.btn-primary { background: blue; }# Botão primário
.text-center { text-align: center; }# Texto centralizado
.hidden { display: none; }# Elemento oculto
📋Seletores de ID
#header { position: fixed; }# Elemento com ID específico
#main-content { max-width: 1200px; }# Conteúdo principal
#sidebar { width: 300px; }# Barra lateral
#footer { margin-top: 50px; }# Rodapé
📋Seletores Combinados
div.container { width: 100%; }# Div com classe específica
ul.nav li { display: inline; }# Li dentro de ul com classe
#header .logo { float: left; }# Elemento com classe dentro de ID
article.post h2 { color: #333; }# H2 dentro de article com classe
📦 Box Model
Use quando: Precisa controlar espaçamento, dimensões e bordas dos elementos
📋Dimensões
width: 300px;# Largura
height: 200px;# Altura
max-width: 100%;# Largura máxima
min-height: 100vh;# Altura mínima
box-sizing: border-box;# Inclui padding e border
📋Margin (Espaço Externo)
margin: 10px;# Todos os lados
margin: 10px 20px;# Vertical 10px, horizontal 20px
margin: 10px 15px 20px 25px;# Top, right, bottom, left
margin-top: 20px;# Apenas topo
margin: 0 auto;# Centraliza horizontalmente
📋Padding (Espaço Interno)
padding: 15px;# Todos os lados
padding: 10px 20px;# Vertical 10px, horizontal 20px
padding: 5px 10px 15px 20px;# Top, right, bottom, left
padding-left: 30px;# Apenas esquerda
padding: 1em;# Unidade relativa
📋Border (Borda)
border: 1px solid #ccc;# Borda completa
border-radius: 5px;# Bordas arredondadas
border-radius: 50%;# Forma circular
border-top: 2px dashed red;# Borda superior
border: none;# Remove borda
📝 Tipografia
Use quando: Precisa estilizar texto, fontes e tipografia
📋Fontes
font-family: Arial, sans-serif;# Família de fontes
font-family: "Helvetica Neue", Helvetica;# Fontes com espaços
font-family: "Times New Roman", serif;# Fonte serif
font-family: "Courier New", monospace;# Fonte monoespaçada
font-family: Georgia, "Times New Roman", serif;# Fontes alternativas
📋Tamanho e Peso
font-size: 16px;# Tamanho em pixels
font-size: 1em;# Tamanho relativo ao pai
font-size: 1rem;# Tamanho relativo à raiz
font-weight: bold;# Negrito
font-weight: 300;# Peso da fonte (100-900)
📋Estilo e Decoração
font-style: italic;# Itálico
text-decoration: underline;# Sublinhado
text-decoration: none;# Remove decoração (links)
text-transform: uppercase;# Maiúsculas
text-transform: capitalize;# Primeiras letras maiúsculas
📋Alinhamento e Espaçamento
text-align: center;# Centraliza texto
text-align: justify;# Justifica texto
line-height: 1.5;# Altura da linha
letter-spacing: 1px;# Espaçamento entre letras
word-spacing: 2px;# Espaçamento entre palavras
🎨 Cores e Fundos
Use quando: Precisa definir cores, fundos e efeitos visuais
📋Cores do Texto
color: #333333;# Cor hexadecimal
color: rgb(51, 51, 51);# Cor RGB
color: rgba(51, 51, 51, 0.8);# Cor RGB com transparência
color: hsl(0, 0%, 20%);# Cor HSL
color: inherit;# Herda cor do pai
📋Cores de Fundo
background-color: #f5f5f5;# Cor de fundo sólida
background: linear-gradient(to right, #ff7e5f, #feb47b);# Gradiente linear
background: radial-gradient(circle, #ff7e5f, #feb47b);# Gradiente radial
background: url("image.jpg");# Imagem de fundo
background-size: cover;# Imagem cobre todo elemento
📋Propriedades de Fundo
background-repeat: no-repeat;# Não repete imagem
background-position: center center;# Posiciona imagem no centro
background-attachment: fixed;# Fundo fixo ao rolar
background-blend-mode: multiply;# Modo de mistura de fundos
opacity: 0.8;# Transparência do elemento
📋Cores Modernas
color: currentColor;# Cor atual do elemento
fill: #333;# Cor de preenchimento (SVG)
stroke: #666;# Cor da borda (SVG)
filter: brightness(1.2);# Ajuste de brilho
filter: saturate(1.5);# Saturação
📐 Layout e Posicionamento
Use quando: Precisa controlar o layout e posicionamento dos elementos
📋Display
display: block;# Elemento em bloco
display: inline;# Elemento em linha
display: inline-block;# Elemento em linha com bloco
display: none;# Oculta elemento
display: flex;# Container flexbox
display: grid;# Container grid
📋Position
position: static;# Posicionamento padrão
position: relative;# Relativo ao seu lugar
position: absolute;# Relativo ao pai posicionado
position: fixed;# Fixo na viewport
position: sticky;# Fixo ao rolar até certo ponto
📋Posicionamento com Coordenadas
top: 0;# Distância do topo
right: 0;# Distância da direita
bottom: 0;# Distância da base
left: 0;# Distância da esquerda
z-index: 100;# Empilhamento de elementos
📋Float e Clear
float: left;# Flutua à esquerda
float: right;# Flutua à direita
clear: both;# Limpa floats anteriores
clear: left;# Limpa float à esquerda
overflow: hidden;# Contém floats (clearfix)
🔧 Flexbox
Use quando: Precisa criar layouts flexíveis e responsivos
📋Container Flexbox
display: flex;# Cria container flex
flex-direction: row;# Direção dos itens (padrão)
flex-direction: column;# Direção vertical
flex-wrap: wrap;# Permite quebra de linha
justify-content: center;# Alinhamento horizontal
align-items: center;# Alinhamento vertical
📋Justify Content
justify-content: flex-start;# Alinha ao início
justify-content: flex-end;# Alinha ao fim
justify-content: center;# Centraliza
justify-content: space-between;# Espaça entre itens
justify-content: space-around;# Espaça ao redor dos itens
justify-content: space-evenly;# Espaçamento igual
📋Align Items e Content
align-items: stretch;# Estica para preencher
align-items: flex-start;# Alinha ao topo
align-items: flex-end;# Alinha à base
align-items: center;# Centraliza verticalmente
align-items: baseline;# Alinha na linha base
align-content: center;# Alinha linhas (com wrap)
📋Itens Flexbox
flex: 1;# Item flexível cresce igualmente
flex: 2;# Item flexível cresce 2x mais
flex-grow: 1;# Capacidade de crescer
flex-shrink: 0;# Não encolhe
flex-basis: 200px;# Tamanho base
align-self: center;# Alinhamento individual
🔲 CSS Grid
Use quando: Precisa criar layouts complexos bidimensionais
📋Container Grid
display: grid;# Cria container grid
grid-template-columns: 1fr 1fr 1fr;# 3 colunas iguais
grid-template-columns: 200px 1fr;# Coluna fixa + flexível
grid-template-columns: repeat(3, 1fr);# Repete colunas
grid-template-rows: auto 1fr auto;# Linhas do grid
gap: 20px;# Espaçamento entre itens
📋Grid Template Areas
grid-template-areas:# Define áreas do grid
"header header header"# Primeira linha
"sidebar main main"# Segunda linha
"footer footer footer";# Terceira linha
grid-area: header;# Área do elemento
📋Posicionamento Grid
grid-column: 1 / 3;# Ocupa colunas 1-2
grid-row: 2 / 4;# Ocupa linhas 2-3
grid-column: span 2;# Ocupa 2 colunas
grid-row: span 3;# Ocupa 3 linhas
grid-area: 1 / 1 / 3 / 4;# Posição completa
📋Alinhamento Grid
justify-items: center;# Alinha itens horizontalmente
align-items: center;# Alinha itens verticalmente
justify-content: center;# Alinha grid horizontalmente
align-content: center;# Alinha grid verticalmente
place-items: center;# Alinha ambos
📱 Responsividade
Use quando: Precisa criar layouts que se adaptam a diferentes telas
📋Media Queries
@media (max-width: 768px) {# Dispositivos móveis
.container { width: 100%; }# Ajuste para mobile
}# Fecha media query
@media (min-width: 769px) {# Dispositivos maiores
.container { width: 750px; }# Ajuste para desktop
}# Fecha media query
📋Breakpoints Comuns
@media (max-width: 576px) { }# Extra small (xs)
@media (max-width: 768px) { }# Small (sm)
@media (max-width: 992px) { }# Medium (md)
@media (max-width: 1200px) { }# Large (lg)
@media (max-width: 1400px) { }# Extra large (xl)
📋Técnicas Responsivas
max-width: 100%;# Imagem responsiva
height: auto;# Mantém proporção
font-size: calc(16px + 0.5vw);# Fonte fluida
width: 100vw;# Largura da viewport
height: 100vh;# Altura da viewport
📋Unidades Responsivas
width: 50vw;# 50% da viewport width
height: 100vh;# 100% da viewport height
font-size: 4vw;# 4% da viewport width
margin: 2vh;# 2% da viewport height
min-width: 320px;# Largura mínima
✨ Animações e Transições
Use quando: Precisa adicionar movimento e interatividade aos elementos
📋Transições
transition: all 0.3s ease;# Transição suave
transition: color 0.5s linear;# Transição de cor
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);# Curva de animação
transition-delay: 0.2s;# Atraso na transição
transition-duration: 0.5s;# Duração da transição
📋Transformações 2D
transform: translateX(50px);# Move horizontalmente
transform: translateY(20px);# Move verticalmente
transform: rotate(45deg);# Rotaciona
transform: scale(1.2);# Aumenta tamanho
transform: skewX(15deg);# Inclina horizontalmente
📋Transformações 3D
transform: rotateX(45deg);# Rotaciona no eixo X
transform: rotateY(45deg);# Rotaciona no eixo Y
transform: rotateZ(45deg);# Rotaciona no eixo Z
transform: perspective(1000px) rotateX(45deg);# Perspectiva 3D
transform-style: preserve-3d;# Mantém contexto 3D
📋Animações
@keyframes slideIn {# Define animação
from { transform: translateX(-100%); }# Estado inicial
to { transform: translateX(0); }# Estado final
}# Fecha keyframe
animation: slideIn 0.5s ease-in-out;# Aplica animação
🔍 Pseudo-classes e Pseudo-elementos
Use quando: Precisa estilizar estados específicos ou adicionar conteúdo dinâmico
📋Pseudo-classes de Estado
:hover { color: blue; }# Mouse sobre elemento
:active { transform: scale(0.95); }# Elemento sendo clicado
:focus { outline: 2px solid blue; }# Elemento focado
:visited { color: purple; }# Link já visitado
:link { color: blue; }# Link não visitado
📋Pseudo-classes Estruturais
:first-child { font-weight: bold; }# Primeiro filho
:last-child { margin-bottom: 0; }# Último filho
:nth-child(odd) { background: #f0f0f0; }# Filhos ímpares
:nth-child(even) { background: #fff; }# Filhos pares
:nth-child(3) { color: red; }# Terceiro filho
📋Pseudo-classes de Formulário
:checked { transform: scale(1.2); }# Checkbox/radio marcado
:disabled { opacity: 0.5; }# Elemento desabilitado
:enabled { cursor: pointer; }# Elemento habilitado
:required { border: 2px solid red; }# Campo obrigatório
:valid { border-color: green; }# Campo válido
📋Pseudo-elementos
::before { content: "→"; }# Antes do conteúdo
::after { content: "←"; }# Depois do conteúdo
::first-line { font-weight: bold; }# Primeira linha
::first-letter { font-size: 2em; }# Primeira letra
::selection { background: yellow; }# Texto selecionado
🚀 Propriedades Avançadas
Use quando: Precisa criar efeitos visuais avançados e modernos
📋Filtros e Efeitos
filter: blur(5px);# Desfoque
filter: brightness(1.2);# Brilho
filter: contrast(1.5);# Contraste
filter: grayscale(100%);# Escala de cinza
filter: sepia(50%);# Efeito sépia
filter: hue-rotate(90deg);# Rotação de matiz
📋Sombreamento
box-shadow: 0 2px 4px rgba(0,0,0,0.1);# Sombra suave
box-shadow: 0 4px 8px rgba(0,0,0,0.2);# Sombra média
box-shadow: 0 8px 16px rgba(0,0,0,0.3);# Sombra forte
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);# Sombra no texto
box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);# Sombra interna
📋Gradientes Avançados
background: linear-gradient(45deg, #ff7e5f, #feb47b);# Gradiente diagonal
background: radial-gradient(circle, #ff7e5f, #feb47b);# Gradiente radial
background: conic-gradient(from 0deg, #ff7e5f, #feb47b, #ff7e5f);# Gradiente cônico
background: repeating-linear-gradient(45deg, #ff7e5f, #ff7e5f 10px, #feb47b 10px, #feb47b 20px);# Gradiente repetido
📋Clipping e Masking
clip-path: circle(50%);# Recorte circular
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);# Recorte poligonal
clip-path: ellipse(50% 40% at 50% 50%);# Recorte elíptico
mask-image: url("mask.png");# Máscara de imagem
backdrop-filter: blur(5px);# Desfoque do fundo
🎨 CSS Custom Properties
Use quando: Precisa criar temas, manter consistência ou facilitar manutenção
📋Declaração de Variáveis
:root {# Declaração global
--primary-color: #3498db;# Cor primária
--secondary-color: #2ecc71;# Cor secundária
--font-size-base: 16px;# Tamanho base
--spacing-unit: 8px;# Unidade de espaçamento
}# Fecha declaração
📋Uso de Variáveis
color: var(--primary-color);# Usa variável de cor
font-size: var(--font-size-base);# Usa variável de tamanho
margin: var(--spacing-unit);# Usa variável de espaçamento
padding: calc(var(--spacing-unit) * 2);# Calcula com variável
📋Variáveis com Fallback
color: var(--primary-color, #333);# Com valor padrão
font-size: var(--font-size-base, 16px);# Com fallback
background: var(--bg-color, var(--white, #fff));# Fallback aninhado
📋Variáveis Dinâmicas
@media (prefers-color-scheme: dark) {# Modo escuro
--primary-color: #5dade2;# Cor para modo escuro
--bg-color: #1a1a1a;# Fundo para modo escuro
}# Fecha media query
🤝 Contribuindo
Encontrou um erro? Quer melhorar um cheatsheet? Tem uma sugestão? Adoraríamos suas contribuições! Abra uma issue ou submeta um PR.
Gostou do projeto? Apoie o desenvolvimento com um café e ajude a manter tudo open source ☕