Skip to main content

CSS Fundamentos

O Que é CSS e Como Funciona​

CSS, que significa Cascading Style Sheets (Folhas de Estilo em Cascata), é a linguagem que controla a apresentação visual das páginas web. Enquanto HTML define a estrutura e o conteúdo, CSS define como esse conteúdo aparece - cores, fontes, espaçamentos, layouts, animações e muito mais.

Pense em HTML como a estrutura de uma casa (paredes, portas, janelas) e CSS como a decoração (cores, móveis, iluminação). Você pode ter uma casa funcional sem decoração, mas ela não será muito atraente. CSS é o que transforma páginas HTML básicas em experiências visuais agradáveis e profissionais.

Como CSS se Conecta com HTML​

Existem três formas principais de adicionar CSS ao HTML:

1. CSS Inline (dentro do elemento)​

<p style="color: blue; font-size: 18px;">Este parágrafo é azul e maior.</p>

Não é recomendado para a maioria dos casos.

2. CSS Interno (na tag <style> no head)​

<head>
<style>
p {
color: blue;
font-size: 18px;
}
</style>
</head>

Útil para estilos específicos de uma única página.

3. CSS Externo (arquivo separado) ⭐ Recomendado​

<head>
<link rel="stylesheet" href="estilos.css">
</head>

E no arquivo estilos.css:

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

Esta abordagem permite reutilizar os mesmos estilos em múltiplas páginas e facilita manutenção.

A Sintaxe Básica do CSS​

CSS funciona através de regras:

seletor {
propriedade: valor;
outra-propriedade: outro-valor;
}

Exemplo prático:

h1 {
color: red;
font-size: 32px;
text-align: center;
}

Esta regra diz: "Todos os elementos <h1> devem ter texto vermelho, tamanho de fonte de 32 pixels, e estar centralizados."

Seletores: Escolhendo os Elementos Certos​

Seletor de Elemento​

p {
color: blue;
}

Seleciona todos os parágrafos.

Seletor de Classe​

<p class="destaque">Este parágrafo tem destaque.</p>
.destaque {
background-color: yellow;
font-weight: bold;
}

Note o ponto (.) antes do nome da classe no CSS.

Seletor de ID​

<p id="introducao">Este é o parágrafo de introdução.</p>
#introducao {
font-size: 20px;
color: green;
}

Note o hash (#) antes do nome do ID no CSS.

Seletor Descendente​

article p {
color: gray;
}

Seleciona apenas parágrafos que estão dentro de elementos <article>.

Seletor de Múltiplos Elementos​

h1, h2, h3 {
font-family: Arial, sans-serif;
color: navy;
}

Propriedades CSS Essenciais​

Cores​

/* Nome da cor */
color: red;

/* Hexadecimal (mais comum) */
color: #FF5733;
color: #333;

/* RGB */
color: rgb(255, 87, 51);

/* RGBA (com transparência) */
color: rgba(255, 87, 51, 0.5);

Tipografia​

p {
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
font-weight: bold;
font-style: italic;
line-height: 1.5;
text-align: center;
text-decoration: underline;
text-transform: uppercase;
}

Espaçamento​

div {
margin: 20px; /* Espaço externo */
padding: 15px; /* Espaço interno */

/* Você pode especificar cada lado separadamente */
margin-top: 10px;
margin-right: 20px;
margin-bottom: 10px;
margin-left: 20px;

/* Ou usar forma abreviada (top, right, bottom, left) */
margin: 10px 20px 10px 20px;

/* Ou (vertical horizontal) */
margin: 10px 20px;
}

Bordas​

div {
border: 2px solid black;
border-radius: 10px; /* Cantos arredondados */

/* Ou especificar cada lado */
border-top: 1px dashed red;
border-right: 2px solid blue;
}

Background​

div {
background-color: lightblue;
background-image: url('imagem.jpg');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}

O Modelo de Caixa (Box Model)​

Um dos conceitos mais importantes do CSS é o Box Model. Todo elemento HTML é tratado como uma caixa retangular com quatro áreas:

  1. Conteúdo: O conteúdo real (texto, imagens, etc.)
  2. Padding: Espaço interno entre o conteúdo e a borda
  3. Border: A borda ao redor do padding
  4. Margin: Espaço externo entre a borda e outros elementos
┌─────────────────────────┐ ← Margin (externo)
│ ┌─────────────────────┐ │
│ │ ┌───────────────┐ │ │ ← Border
│ │ │ │ │ │
│ │ │ Conteúdo │ │ │ ← Padding (interno)
│ │ │ │ │ │
│ │ └───────────────┘ │ │
│ └─────────────────────┘ │
└─────────────────────────┘

Você pode mudar isso com a propriedade box-sizing:

* {
box-sizing: border-box; /* width inclui padding e border */
}

Muitos desenvolvedores usam box-sizing: border-box globalmente porque torna os cálculos de largura mais previsíveis.

Layout com Flexbox​

Flexbox é um sistema de layout moderno que torna muito mais fácil criar layouts flexíveis e responsivos.

.container {
display: flex;
justify-content: center; /* Alinhamento horizontal */
align-items: center; /* Alinhamento vertical */
gap: 20px; /* Espaço entre itens */
}

Exemplo prático:

<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
</div>
.container {
display: flex;
justify-content: space-between;
align-items: center;
height: 100vh;
}

.item {
padding: 20px;
background-color: lightblue;
}

Flexbox é especialmente poderoso para:

  • Centralizar conteúdo (horizontal e verticalmente)
  • Criar layouts de navegação
  • Distribuir espaço igualmente entre elementos
  • Criar layouts responsivos

CSS Grid: Layouts em Duas Dimensões​

Enquanto Flexbox é excelente para layouts em uma dimensão (linha ou coluna), CSS Grid é perfeito para layouts em duas dimensões (linhas e colunas simultaneamente).

.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr; /* 3 colunas de tamanho igual */
grid-template-rows: auto;
gap: 20px;
}

Exemplo de layout com Grid:

<div class="grid-container">
<header>Header</header>
<aside>Sidebar</aside>
<main>Main Content</main>
<footer>Footer</footer>
</div>
.grid-container {
display: grid;
grid-template-columns: 200px 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
gap: 20px;
height: 100vh;
}

header { grid-area: header; }
aside { grid-area: sidebar; }
main { grid-area: main; }
footer { grid-area: footer; }

Responsividade e Design Mobile-First​

Com a maioria dos usuários acessando a web através de dispositivos móveis, criar sites responsivos é essencial.

A abordagem mobile-first significa projetar primeiro para telas pequenas e depois adicionar estilos para telas maiores:

/* Estilos base (mobile) */
.container {
padding: 10px;
font-size: 14px;
}

/* Tablets */
@media (min-width: 768px) {
.container {
padding: 20px;
font-size: 16px;
}
}

/* Desktop */
@media (min-width: 1024px) {
.container {
padding: 40px;
font-size: 18px;
max-width: 1200px;
margin: 0 auto;
}
}

Media queries permitem aplicar estilos diferentes baseados no tamanho da tela.

Animações e Transições​

CSS permite criar animações e transições suaves sem JavaScript:

Transições​

button {
background-color: blue;
transition: background-color 0.3s ease;
}

button:hover {
background-color: red;
}

Animações​

@keyframes pulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}

.elemento {
animation: pulse 2s infinite;
}

Variáveis CSS (Custom Properties)​

Variáveis CSS permitem reutilizar valores:

:root {
--cor-primaria: #3498db;
--cor-secundaria: #2ecc71;
--espacamento: 20px;
}

.button {
background-color: var(--cor-primaria);
padding: var(--espacamento);
}

Isso facilita manutenção - mudar a cor primária em um lugar atualiza em todos os lugares.

Boas Práticas de CSS​

1. Evite Estilos Inline​

Prefira CSS externo ou interno ao invés de estilos inline.

2. Use Classes ao Invés de IDs para Estilização​

IDs devem ser usados para identificação única, não para estilização.

3. Seja Específico, Mas Não Demais​

Evite seletores muito específicos como .container .wrapper .content .text p.

4. Use Nomes de Classes Descritivos​

/* Bom */
.btn-primary
.card-header
.nav-item

/* Ruim */
.red-button
.div1
.stuff

5. Organize Seu CSS​

Use comentários para separar seções:

/* ===================================
Header Styles
=================================== */
header {
/* estilos aqui */
}

Próximos Passos​

Agora você tem HTML para estrutura e CSS para apresentação. No próximo módulo, vamos aprender JavaScript - a linguagem que adiciona interatividade e comportamento dinâmico às suas páginas.

Antes de continuar, pratique criando layouts com CSS. Tente recriar layouts de sites que você gosta, experimente com Flexbox e Grid, e crie versões responsivas das suas páginas.


Referências​