Easy Builder

Boas Práticas WordPress e Elementor

Protocolo padrão de implementação para garantir qualidade e consistência

Para Quem é Este Guia?

Este documento serve como protocolo padrão para:

  • 👥 Time Easy Builder: Ao criar e subir templates
  • 🎨 Usuários: Ao personalizar e criar páginas

Objetivo: Garantir que todos os projetos sigam os mesmos padrões de qualidade, performance e manutenibilidade. Use como checklist e referência rápida!


1. Nomenclatura de Elementos

Por Que Nomear Elementos?

Quando você (ou outra pessoa) voltar para editar a página daqui 3 meses, nomes claros economizam horas de trabalho tentando entender onde está cada coisa.

Problema: Elementos com nomes genéricos

❌ Container
❌ Coluna 1
❌ Section 2
❌ Botão

Solução: Nomes descritivos e padronizados

✅ container-hero
✅ btn-cta-whatsapp
✅ secao-depoimentos
✅ card-servico-01

Padrão Recomendado

Use: tipo-funcao-identificador

Containers

Exemplos:

  • container-hero
  • container-servicos
  • container-depoimentos
  • container-contato
  • container-rodape

Quando usar: Todo container principal de seção

Botões

Exemplos:

  • btn-cta-principal (botão de ação principal)
  • btn-whatsapp (botão WhatsApp)
  • btn-secundario
  • btn-fechar-modal

Quando usar: Todos os botões importantes

Cards

Exemplos:

  • card-servico-01
  • card-beneficio-velocidade
  • card-depoimento-maria
  • card-produto-plano-pro

Quando usar: Cards repetitivos ou importantes

Seções

Exemplos:

  • secao-sobre
  • secao-contato
  • secao-portfolio
  • secao-precos

Quando usar: Seções principais da página

Como Nomear no Elementor

Selecione o elemento

Clique no elemento (container, coluna, widget)

Abra configurações avançadas

Vá na aba "Avançado"

Adicione ID ou Class CSS

  • ID CSS: Para elemento único (ex: hero-principal)
  • Classes CSS: Para elementos reutilizáveis (ex: btn-cta)

Dica do time: Nomeie ANTES de começar a personalizar. Fica mais fácil achar depois!


2. Otimização de Imagens

Por Que Otimizar Imagens?

80% da lentidão de sites vem de imagens pesadas!

Imagem de 5MB (direto da câmera) = Site lento = Cliente insatisfeito = Menos vendas

Nunca suba fotos direto da câmera ou celular! Sempre otimize antes.

Formatos: O Que Usar e Quando

AVIF (Melhor!)

1ª Escolha - Formato Mais Moderno

Vantagens:

  • Compressão SUPERIOR ao WebP
  • Arquivos ainda menores
  • Qualidade visual excelente

Quando usar:

  • Todas as imagens de site (hero, cards, produtos)
  • Navegadores modernos (Chrome, Edge, Opera)

Como converter:

  1. Abra Squoosh.app
  2. Arraste imagem
  3. Selecione formato: AVIF
  4. Ajuste qualidade: 50-70%
  5. Baixe otimizada

Configuração recomendada:

  • Qualidade: 60% (balanço perfeito)
  • Esforço: 4 (padrão)

WebP (Ótimo!)

2ª Escolha - Amplamente Suportado

Vantagens:

  • 96% menor que JPEG/PNG
  • Excelente compressão
  • Suporte em todos navegadores modernos

Quando usar:

  • Alternativa ao AVIF
  • Compatibilidade máxima
  • Todas as imagens de site

Como converter:

  1. Abra Squoosh.app
  2. Arraste imagem
  3. Selecione formato: WebP
  4. Ajuste qualidade: 60-80%
  5. Baixe otimizada

Configuração recomendada:

  • Qualidade: 75% (padrão)
  • Esforço: 4

SVG (Vetores!)

Para Ícones, Logos e Ilustrações

**Vantagens:**
- Escalável infinitamente (não perde qualidade)
- Arquivo MUITO pequeno
- Pode alterar cores via CSS

**Quando usar:**
- Logos da empresa
- Ícones (ícones do Font Awesome já são SVG internamente)
- Ilustrações vetoriais
- Formas geométricas

**Onde criar:**
- Figma (exportar como SVG)
- Illustrator (salvar como SVG)
- Canva Pro (baixar como SVG)

Não use SVG para fotos! Só funciona com elementos vetoriais.

Tamanhos: O Que Usar Para Cada Caso

Tipo de ImagemLargura RecomendadaQuando Usar
Hero/Banner Desktop1920pxImagem de fundo de seção hero full width
Hero/Banner Mobile1080pxMesma seção, mas versão mobile
Imagens de Conteúdo1200pxFotos dentro de seções (sobre nós, galeria)
Cards/Thumbnails600pxCards de serviços, produtos, blog
Ícones/Logos200px ou SVGLogos, ícones decorativos

Lembre-se: Largura Desktop = 1920px / Mobile = 1080px (padrão Easy Builder)

Proporções: Quando Usar Cada Uma

16:9 (Landscape)

Uso: Banners, vídeos, hero sections

Exemplo: 1920x1080px

CSS: aspect-ratio: 16/9;

1:1 (Quadrado)

Uso: Fotos de perfil, produtos, Instagram

Exemplo: 800x800px

CSS: aspect-ratio: 1/1;

4:3 (Clássico)

Uso: Fotos tradicionais, galerias

Exemplo: 1200x900px

CSS: aspect-ratio: 4/3;

4:5 (Retrato)

Uso: Stories, fotos verticais

Exemplo: 1080x1350px

CSS: aspect-ratio: 4/5;


3. Tipografia Responsiva

Por Que Usar REM ao Invés de PX?

REM é relativo ao tamanho base do navegador (16px), então:

  • ✅ Respeita preferências do usuário (acessibilidade)
  • ✅ Escala proporcionalmente
  • ✅ Mais fácil de ajustar globalmente

PX é fixo:

  • ❌ Não respeita preferências do usuário
  • ❌ Difícil de manter consistência
  • ❌ Não escala bem

Conversão rápida: 1rem = 16px (padrão dos navegadores)

Tabela Completa de Tamanhos

Use esta tabela como referência ao ajustar textos:

ElementoDesktop (px)Tablet (px)Mobile (px)Desktop (rem)Tablet (rem)Mobile (rem)
H148-60px36-48px28-36px3-3.75rem2.25-3rem1.75-2.25rem
H236-42px28-36px24-28px2.25-2.625rem1.75-2.25rem1.5-1.75rem
H328-32px24-28px20-24px1.75-2rem1.5-1.75rem1.25-1.5rem
H422-26px20-24px18-22px1.375-1.625rem1.25-1.5rem1.125-1.375rem
Texto Base16-18px15-17px14-16px1-1.125rem0.9375-1.0625rem0.875-1rem
Texto Pequeno14-15px13-14px12-13px0.875-0.9375rem0.8125-0.875rem0.75-0.8125rem

Quando Usar Cada Tamanho

H1 - Título Principal (apenas 1 por página!)

Onde usar: - Título do Hero (primeira seção) - Único H1 da página inteira!

**Exemplo:**
> "Crie Sites Profissionais em Horas, Não Dias"

**Desktop:** 3rem (48px)
**Mobile:** 1.75rem (28px)

SEO importante: Use APENAS UM H1 por página! Google penaliza múltiplos H1s.

H2 - Títulos de Seção

Onde usar:

  • Início de cada seção principal
  • "Sobre Nós", "Nossos Serviços", "Depoimentos"

Exemplo:

"O Que Nossos Clientes Dizem"

Desktop: 2.25rem (36px) Mobile: 1.5rem (24px)

H3 - Subtítulos e Cards

Onde usar:

  • Títulos de cards
  • Subseções dentro de seções
  • Nomes de serviços/produtos

Exemplo:

"Consultoria Estratégica"

Desktop: 1.75rem (28px) Mobile: 1.25rem (20px)

Texto Base - Parágrafos

Onde usar:

  • Todo texto corrido
  • Descrições
  • Conteúdo principal

Desktop: 1rem (16px) Mobile: 0.875rem (14px)

Line-height: 1.6-1.8 (espaço entre linhas)

Tipografia Fluida com clamp()

O que é clamp(): Faz o texto crescer/diminuir automaticamente conforme o tamanho da tela, SEM media queries!

Sintaxe: clamp(mínimo, ideal, máximo)

Exemplo prático:

/* H1 que escala automaticamente */
font-size: clamp(1.75rem, 5vw, 3.75rem);
/* Mobile: 1.75rem → Desktop: 3.75rem → Entre eles: 5% da largura da tela */

Como usar: copie a linha acima e cole no campo "CSS Personalizado" da página (ou no CSS do título). O texto vai encolher sozinho no celular e crescer no computador, sem você fazer nada. Se quiser, troque o 1.75rem pelo menor tamanho que o texto pode ter e o 3.75rem pelo maior; o 5vw no meio controla a velocidade dessa mudança (pode deixar como está).

Por que usar:

  • ✅ Menos código (não precisa media query)
  • ✅ Transição suave entre tamanhos
  • ✅ Mais fluido e profissional

Use clamp() para H1 e H2! Para textos menores, valores fixos são mais previsíveis.


4. Espaçamentos (Padding e Margin)

Por Que Usar Sistema de Múltiplos?

Consistência visual! Usar sempre múltiplos de 8px (0.5rem) cria ritmo visual harmonioso.

Problema: Espaçamentos aleatórios

❌ padding: 13px 27px; (valores aleatórios)
❌ margin-bottom: 19px; (sem padrão)

Solução: Sistema padronizado

✅ padding: 1rem 2rem; (16px 32px - múltiplos de 8)
✅ margin-bottom: 1.5rem; (24px - múltiplo de 8)

Sistema de Espaçamento Base

NomeValor REMValor PXQuando Usar
XS0.5rem8pxEspaço mínimo entre elementos pequenos
S1rem16pxEspaço padrão entre parágrafos
M1.5rem24pxEspaço entre blocos relacionados
L2rem32pxPadding interno de cards
XL3rem48pxEspaço entre seções menores
XXL4rem64pxEspaço entre seções médias
XXXL6rem96pxEspaço entre seções grandes

Containers: Quando e Como

Container Principal (seção inteira):

BreakpointPadding HorizontalPadding VerticalPor Quê?
Desktop5-7.5%5-7.5remRespira nas laterais, confortável verticalmente
Tablet4-5%3.75-5remMenos espaço lateral, mantém respiração
Mobile5-6%2.5-3.75remAproveita tela pequena, menos vertical

Container Interno (nested):

BreakpointPaddingPor Quê?
Desktop2.5-3.75remCards e blocos internos precisam menos espaço
Tablet1.875-2.5remProporcionalmente menor
Mobile1.25-1.875remAproveita cada pixel

Espaço Entre Seções

Por que importa: Separação visual clara = página organizada e profissional

BreakpointMargin BottomQuando Usar
Desktop5-7.5remEntre seções principais (Hero → Serviços → Depoimentos)
Tablet3.75-5remMesma lógica, proporcionalmente menor
Mobile2.5-3.75remMobile precisa menos espaço vertical

Regra de ouro: Quanto MAIOR o elemento, MAIOR o espaço ao redor!


5. Botões Profissionais

Por Que Tamanho de Botão Importa?

Botões pequenos demais: Difícil de clicar (especialmente no mobile!) Botões grandes demais: Parecem amadores e poluem a página

Tamanhos Padrão

Botão Médio (Padrão)

Quando usar: 90% dos casos (CTAs principais, formulários)

BreakpointPaddingFont SizePor Quê?
Desktop1rem 2rem1-1.125remConfortável para clicar
Tablet0.875rem 1.75rem0.9375-1.0625remProporcionalmente menor
Mobile0.75rem 1.5rem0.875-1remFácil de tocar com dedos

Código exemplo: css padding: 1rem 2rem; /* Desktop */ font-size: 1rem; border-radius: 0.5rem; /* Cantos arredondados */

**Como usar:** copie o código acima e cole no campo "CSS Personalizado" do botão. Ele deixa o botão com um espaço interno confortável, texto de tamanho normal e cantos levemente arredondados. Quer cantos mais arredondados? Aumente o `0.5rem`. Quer cantos retos? Use `0`.

Botão Grande (CTA Forte)

Quando usar: CTA PRINCIPAL da página (ex: "Comprar Agora", "Começar Grátis")

BreakpointPaddingFont Size
Desktop1.25rem 2.5rem1.125-1.25rem
Tablet1.125rem 2.25rem1.0625-1.1875rem
Mobile1rem 2rem1-1.125rem

Quando usar:

  • Hero (botão principal)
  • Final da página de vendas
  • Ações de alta prioridade

Botão Pequeno (Secundário)

Quando usar: Ações secundárias ("Saiba Mais", "Ver Detalhes")

BreakpointPaddingFont Size
Desktop0.75rem 1.5rem0.875-1rem
Tablet0.625rem 1.25rem0.8125-0.9375rem
Mobile0.625rem 1.25rem0.8125-0.9375rem

Botão Full Width no Mobile

Por quê fazer: Botões largos no mobile são MUITO mais fáceis de clicar!

/* Desktop e Tablet */
width: auto;

/* Mobile */
width: 100%; /* Ocupa tela toda */

Como usar: o jeito mais simples é fazer pelo Elementor (veja a dica abaixo). Se preferir colar código, ponha width: 100% no CSS do botão na visão mobile — assim ele estica e ocupa a tela toda no celular, ficando bem mais fácil de tocar. Não precisa mudar nada no código.

Dica: Configure no Elementor → Avançado → Width → Mobile: 100%


6. Padrões de Código CSS

Estrutura e Organização

Como organizar CSS personalizado no Elementor:

/* ============================================
   SEÇÃO: HERO PRINCIPAL
   ============================================ */

/* Botão CTA com efeito hover */
.btn-cta-hero {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  transition: all 0.3s ease;
}

.btn-cta-hero:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 20px rgba(0,0,0,0.2);
}

/* ============================================
   SEÇÃO: CARDS DE SERVIÇOS
   ============================================ */

.card-servico {
  border-radius: 1rem;
  transition: transform 0.3s ease;
}

.card-servico:hover {
  transform: scale(1.05);
}

Como usar: copie o código acima e cole no campo "CSS Personalizado" da página. Ele deixa o botão com fundo colorido em degradê que sobe levemente quando o mouse passa, e faz os cards crescerem um pouco ao passar o mouse. Para funcionar, o botão precisa ter a classe btn-cta-hero e os cards a classe card-servico (você coloca isso na aba "Avançado" do elemento). Quer outras cores no fundo? Troque os dois códigos de cor #667eea e #764ba2.

Boas Práticas de CSS

1. Use Classes, Não IDs para Estilos

Por quê:

  • IDs são únicos (só podem ser usados 1x)
  • Classes são reutilizáveis

Errado: css #botao-1 { color: blue; } /* ID - não reutilizável */

Certo: css .btn-primario { color: blue; } /* Classe - reutilizável */

2. Agrupe Propriedades Relacionadas

Ordem recomendada:

```css
.elemento {
  /* 1. Posicionamento */
  position: relative;
  top: 0;
  left: 0;

  /* 2. Box Model */
  display: flex;
  width: 100%;
  padding: 1rem;
  margin: 0;

  /* 3. Tipografia */
  font-size: 1rem;
  font-weight: 600;
  color: #333;

  /* 4. Visual */
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 0.5rem;

  /* 5. Animações */
  transition: all 0.3s ease;
}
```

Como usar: este é um modelo de organização. Quando você escrever CSS de um elemento, agrupe na ordem mostrada (posição, tamanho/espaço, texto, aparência, animação) e use os comentários /* ... */ como divisórias. Não precisa copiar tudo: aproveite só as linhas que fizer sentido para o seu caso.

Por quê: Mais fácil de ler e manter!

3. Use Variáveis CSS para Cores

Por quê: Mudar cor em 1 lugar atualiza tudo!

```css
/* Defina variáveis no topo */
:root {
  --cor-primaria: #667eea;
  --cor-secundaria: #764ba2;
  --cor-texto: #333333;
  --cor-fundo: #ffffff;
}

/* Use nas classes */
.btn-cta {
  background: var(--cor-primaria);
  color: var(--cor-fundo);
}

.btn-secundario {
  background: var(--cor-secundaria);
}
```

Como usar: copie o código acima e cole no campo "CSS Personalizado" da página. Troque os códigos de cor (#667eea, #764ba2, etc.) pelas cores da sua marca. A partir daí, sempre que precisar de uma cor, use o apelido (por exemplo var(--cor-primaria)) em vez do código. A vantagem: se um dia quiser mudar a cor do site inteiro, basta trocar em um lugar só, aqui no topo.

Vantagem: Troca cores do site inteiro mudando só as variáveis!

4. Prefira Flexbox/Grid a Position Absolute

Por quê: Position absolute quebra responsividade!

Errado (quebra no mobile): css .elemento { position: absolute; top: 100px; left: 200px; /* Vai ficar torto no mobile! */ }

Certo (responsivo): css .container { display: flex; justify-content: center; align-items: center; gap: 1rem; /* Funciona em qualquer tela */ }

5. Comente Código Complexo

Quando comentar:

  • Código não óbvio

  • Hacks ou soluções específicas

  • Código que pode confundir depois

    /* Corrige bug do Safari com z-index */
    .elemento {
      transform: translateZ(0);
      -webkit-transform: translateZ(0);
    }
    
    /* Gradiente animado (muda cor constantemente) */
    @keyframes gradient-shift {
      0% { background-position: 0% 50%; }
      100% { background-position: 100% 50%; }
    }
    

Como usar: o foco aqui é o hábito de deixar um comentário (o texto entre /* */) explicando truques que não são óbvios, para você lembrar depois. Se for usar o primeiro trecho, copie e cole no CSS do elemento que estiver com problema de sobreposição no navegador Safari. Não precisa mudar nada.


7. Padrões de JavaScript

Quando Usar JavaScript no Elementor

Use JS para:

  • ✅ Interações (clique, scroll, hover complexo)
  • ✅ Animações programáticas
  • ✅ Validação de formulários customizada
  • ✅ Integração com APIs

NÃO use JS para:

  • ❌ Coisas que CSS faz melhor (animações simples, hover, transições)
  • ❌ Estilização visual
  • ❌ Layouts

Estrutura de Código JS

/* ============================================
   SCROLL SUAVE PARA SEÇÕES
   ============================================ */

document.querySelectorAll('a[href^="#"]').forEach(anchor => {
  anchor.addEventListener('click', function (e) {
    e.preventDefault();

    const targetId = this.getAttribute('href');
    const targetElement = document.querySelector(targetId);

    if (targetElement) {
      targetElement.scrollIntoView({
        behavior: 'smooth',
        block: 'start'
      });
    }
  });
});

/* ============================================
   MODAL DE VÍDEO
   ============================================ */

function abrirModal(videoId) {
  const modal = document.getElementById('modal-video');
  const iframe = document.getElementById('video-frame');

  // Insere URL do YouTube
  iframe.src = `https://www.youtube.com/embed/${videoId}?autoplay=1`;

  // Mostra modal
  modal.classList.add('ativo');
}

function fecharModal() {
  const modal = document.getElementById('modal-video');
  const iframe = document.getElementById('video-frame');

  // Para vídeo
  iframe.src = '';

  // Esconde modal
  modal.classList.remove('ativo');
}

Como usar: copie este código e cole num bloco/widget de HTML da página (dentro de uma tag de script) ou no campo de código personalizado. A primeira parte faz a página rolar suavemente até a seção quando alguém clica num link de menu. A segunda parte abre e fecha uma janela de vídeo. Para o vídeo funcionar, o botão precisa chamar abrirModal com o código do vídeo do YouTube. Se não for usar vídeo, pode apagar a segunda parte.

Boas Práticas de JavaScript

Use const e let, não var

    // ❌ Errado (antigo)
    var nome = "João";

    // ✅ Certo (moderno)
    const nome = "João"; // Não muda
    let idade = 25; // Pode mudar
    ```

**Por quê:** Mais seguro e previsível

Comente o QUE e POR QUÊ

    // Aguarda 300ms antes de executar
    // para evitar múltiplos cliques
    setTimeout(() => {
      enviarFormulario();
    }, 300);
    ```

**Como usar:** o ponto aqui é o hábito de escrever um comentário curto explicando o porquê do código. Se for usar este trecho, ele espera um instantinho (0,3 segundo) antes de enviar o formulário, evitando envio duplicado por clique repetido. Quer mais ou menos espera? Troque o número `300` (são milésimos de segundo; 1000 = 1 segundo).

**Por quê:** Você vai esquecer daqui 1 semana!

Use addEventListener

    // ❌ Evite inline
    <button onclick="clicar()">

    // ✅ Use addEventListener
    button.addEventListener('click', () => {
      // código aqui
    });
    ```

**Por quê:** Mais organizado e manutenível

Valide Antes de Usar

    const elemento = document.querySelector('.botao');

    if (elemento) {
      elemento.addEventListener('click', () => {
        // Código seguro
      });
    }
    ```

**Como usar:** copie este modelo quando for mexer com algum elemento via código. Ele primeiro confere se o elemento existe na página antes de tentar usá-lo, evitando que o resto do código pare de funcionar por causa de um erro. Troque `.botao` pela classe do elemento que você quer usar.

**Por quê:** Evita erros se elemento não existir


8. Estrutura de Headings (SEO)

Por Que Hierarquia Importa?

Google usa headings para entender seu site!

Hierarquia correta = Melhor SEOHierarquia errada = Google confuso = Menos visitantes

Regras Fundamentais

1 H1 por página (OBRIGATÓRIO!)

Por quê: Google espera 1 H1 = tópico principal

Onde: Título principal do Hero

Exemplo: "Crie Sites Profissionais com Easy Builder"

Não pule níveis

Errado: H1 → H3 (pulou o H2)

Certo: H1 → H2 → H3 → H4

Por quê: Google entende como estrutura lógica de documento

Cada seção principal = H2

Seções do site:

  • H2: Sobre Nós
  • H2: Nossos Serviços
  • H2: Depoimentos
  • H2: Contato

Por quê: Google indexa melhor e usuário escaneia rápido

Configure via Widget Heading

No Elementor:

  • Use widget "Heading"
  • Não use widget "Text Editor" estilizado como título

Por quê: Semântica HTML correta para SEO

Exemplo de Estrutura Completa

📄 Página: "Easy Builder - Crie Sites Rápido"

H1 - "Crie Sites Profissionais em Horas" (Hero)

  H2 - "Sobre o Easy Builder" (Seção)
    H3 - "Nossa Missão" (Subseção)
    H3 - "Nossos Valores" (Subseção)

  H2 - "Funcionalidades" (Seção)
    H3 - "Templates Prontos" (Card 1)
    H3 - "IA Integrada" (Card 2)
    H3 - "Suporte 24/7" (Card 3)

  H2 - "Depoimentos" (Seção)
    H3 - "João Silva" (Depoimento 1)
    H3 - "Maria Santos" (Depoimento 2)

  H2 - "Preços" (Seção)

  H2 - "Fale Conosco" (Seção)

Esta estrutura é perfeita para SEO e acessibilidade!


9. Cores e Contraste (Acessibilidade)

Por Que Contraste Importa?

Contraste ruim = Texto ilegível = Usuário desiste = Cliente perde venda

Além disso, acessibilidade é LEI em muitos países!

Contraste Mínimo (WCAG)

Texto Normal

Mínimo: 4.5:1

Exemplo OK:

  • Texto #222222 em fundo #FFFFFF ✅
  • Texto #FFFFFF em fundo #333333 ✅

Exemplo RUIM:

  • Texto #CCCCCC em fundo #FFFFFF ❌ (contraste 1.6:1)

Texto Grande (18px+)

Mínimo: 3:1

Pode ser um pouco mais claro que texto normal

Títulos grandes perdoam contraste menor

Botões e Links

Mínimo: 3:1

Importante: Botão precisa se destacar do fundo!

Teste Sempre!

Use WebAIM Contrast Checker

Cole cor do texto e cor do fundo = resultado instantâneo!

Combinações Seguras Prontas

Texto escuro em fundo claro:

  • Texto: #222222 ou #333333
  • Fundo: #FFFFFF ou #F5F5F5
  • Contraste: 12:1

Texto claro em fundo escuro:

  • Texto: #FFFFFF ou #F5F5F5
  • Fundo: #222222 ou #1A1A1A
  • Contraste: 14:1

Evite cinza claro em branco! (#CCCCCC em #FFFFFF = contraste 1.6:1 = ILEGÍVEL)


10. Performance: O Que Realmente Importa

4 Pilares da Performance

1. Imagens Otimizadas

Impacto: 80% da lentidão vem de imagens!

Checklist:

  • ✅ Formato AVIF ou WebP
  • ✅ Qualidade 60-80%
  • ✅ Dimensões corretas (não usar 4K para card pequeno!)
  • ✅ Lazy loading ativado

Como ativar lazy load: Elementor → Imagem → Avançado → Loading: Lazy

2. Fontes Otimizadas

Impacto: Cada fonte extra = +100-200kb!

Regras:

  • ✅ Máximo 2-3 famílias de fontes
  • ✅ Máximo 4-5 pesos por família
  • ❌ Não carregue 10 variações se usa só 2!

Exemplo ruim: ❌ Roboto: 100, 300, 400, 500, 700, 900 (6 pesos!)

Exemplo bom: ✅ Roboto: 400, 700 (2 pesos)

3. Animações com Moderação

Impacto: Animações demais = site pesado no mobile!

Regras:

  • ✅ Anime só elementos chave (Hero, CTAs)
  • ✅ Use will-change para animações complexas
  • ❌ Não anime tudo na página
  • ❌ Evite scroll-triggered em excesso

Exemplo: ```css .btn-cta { transition: transform 0.3s ease; /* Leve */ }

.btn-cta:hover {
  transform: translateY(-3px);
}
```

Como usar: copie e cole no campo "CSS Personalizado" do botão. Ele faz o botão subir levemente quando o mouse passa por cima — um efeito leve, que não deixa a página pesada. Para funcionar, o botão precisa ter a classe btn-cta (aba "Avançado" do elemento). Quer que ele suba mais? Aumente o 3px.

4. CSS e JS Limpos

Impacto: Código desnecessário = site mais lento!

Checklist:

  • ✅ Remova CSS não usado
  • ✅ Desabilite widgets não usados
  • ✅ Regenere CSS regularmente
  • ✅ Minifique código em produção

Como regenerar CSS: Elementor → Ferramentas → Regenerate CSS & Data


11. Responsividade: Como Pensar Mobile-First

Por Que Mobile-First?

70% dos acessos vêm de celular! Se o site não funciona bem no mobile, você perde 70% das conversões.

Breakpoints: O Que São e Como Usar

Breakpoints = Pontos onde layout muda

BreakpointLarguraDispositivosQuando Ajustar
Mobileaté 767pxCelularesSEMPRE configure!
Tablet768-1024pxiPads, tabletsConfigure se layout quebrar
Desktop1025px+Notebooks, PCsConfiguração padrão

Como Configurar no Elementor

1. Ative modo responsivo

Clique no ícone de dispositivo (desktop/tablet/mobile) embaixo no Elementor

2. Mude para Mobile

Clique em "Mobile" para ver preview mobile

3. Ajuste elemento por elemento

  • Tamanhos de fonte (reduza)
  • Padding (reduza)
  • Margin (reduza)
  • Altura de seções (ajuste)
  • Oculte elementos desnecessários (Hide on Mobile)

4. Teste em dispositivo real

IMPORTANTE: Preview do Elementor nem sempre é exato!

Teste no celular de verdade ou use DevTools do navegador (F12)

Técnicas Responsivas Essenciais

Ocultar Elementos no Mobile

Quando usar: Elementos decorativos, textos longos, imagens grandes

Como fazer:

  1. Selecione elemento
  2. Avançado → Responsivo
  3. Marque: "Hide On Mobile"

Exemplo: Imagem decorativa gigante que polui mobile

Reverse Columns (Inverter Ordem)

Quando usar: Quando imagem está à esquerda no desktop mas deve ficar ABAIXO do texto no mobile

Como fazer:

  1. Selecione container
  2. Layout → Responsivo
  3. Mobile: "Reverse Columns"

Antes (desktop): [Imagem] [Texto]

Depois (mobile): [Texto] [Imagem]

Por quê: Usuário lê texto antes de ver imagem (ordem lógica!)

Full Width no Mobile

Quando usar: Botões, formulários, imagens

Por quê: Aproveita espaço pequeno do mobile!

Como fazer:

  1. Avançado → Width
  2. Desktop: Auto ou Custom
  3. Mobile: 100%
Stack Vertical no Mobile

Quando usar: Grid de 3-4 colunas no desktop

Desktop: [Card 1] [Card 2] [Card 3]

Mobile: [Card 1] [Card 2] [Card 3]

Como fazer: Elementor faz automaticamente, mas ajuste gaps!


12. Formulários: UX e Acessibilidade

Por Que Formulários Importam?

Formulário ruim = Cliente desiste = Você perde lead/venda

Tamanhos Mínimos (Especialmente Mobile!)

PropriedadeDesktopMobilePor Quê?
Altura Campo3.125rem (50px)2.75rem (44px) MÍNIMODedos precisam clicar fácil!
Font Size1rem (16px)1rem (16px) MÍNIMOiOS faz zoom se menor que 16px!
Padding0.75rem 1.25rem0.625rem 1remTexto não cola nas bordas
Espaço entre campos1.25rem1remFácil de distinguir campos

CRÍTICO Mobile: Font size mínimo 16px (1rem)! Se menor, iOS dá zoom automático e quebra layout!

Labels e Placeholders

Labels (texto acima do campo):

<label>Nome Completo</label>
<input type="text" placeholder="Digite seu nome">

Como usar: no Elementor você normalmente cria o campo pelo próprio widget de formulário, sem digitar esse código. Mas é assim que ele funciona por baixo: o "Nome Completo" é o rótulo que fica acima do campo (importante para acessibilidade) e o "Digite seu nome" é o texto-exemplo cinza que some quando a pessoa começa a digitar. Troque esses dois textos pelo que fizer sentido no seu campo.

Quando usar:

  • ✅ Sempre use labels (acessibilidade!)
  • ✅ Placeholder como exemplo adicional
  • ❌ Não use APENAS placeholder sem label

Font size labels:

  • Desktop: 0.875-1rem
  • Mobile: 0.875-1rem (não menor!)

Textarea (Campo de Mensagem)

Altura mínima:

  • Desktop: 9rem (≈6 linhas de texto)
  • Mobile: 7rem (≈5 linhas)

Por quê: Usuário precisa ver o que está escrevendo!

Tabela Completa - Formulários (Detalhada)

PropriedadeDesktopTabletMobileObservação
Input Height3.125rem - 3.5rem (50-56px)3rem - 3.25rem (48-52px)2.75rem - 3rem (44-48px)Mínimo 44px mobile (area de toque)
Input Padding0.75rem 1.25rem0.75rem 1.125rem0.625rem 1remConforto visual
Input Font Size1rem (16px)0.9375rem (15px)1rem (16px)CRÍTICO: 16px mobile evita zoom iOS
Border Radius0.25rem - 0.5rem0.25rem - 0.5rem0.25rem - 0.5remConsistente em todos
Gap entre campos1.25rem - 1.5rem1.125rem - 1.25rem1rem - 1.125remSeparação clara
Label Font Size0.875rem - 1rem0.8125rem - 0.9375rem0.875rem - 1remLegível mas menor que input
Label Margin Bottom0.5rem0.375rem0.375remEspaço entre label e campo
Textarea Min-Height9rem (144px ≈6 linhas)8rem (128px)7rem (112px)Usuário vê o que digita

Largura de Campos (Width)

Tipo de CampoLargura RecomendadaPor Quê?
Full widthwidth: 100%Nome, Email, Mensagem
50% (2 colunas)width: calc(50% - 0.75rem)Nome + Sobrenome lado a lado
Email/Telefonemax-width: 25rem (400px)Não precisa ser gigante

12.1. Ícones - Tamanhos Detalhados

Por Que Tamanho de Ícone Importa?

Ícones muito pequenos: Invisíveis, perdem impacto Ícones muito grandes: Desproporcionais, amadores

Tabela Completa - Todos os Tipos de Ícones

Tipo de ÍconeDesktopTabletMobileQuando Usar
Decorativos/Features3rem - 4rem (48-64px)2.5rem - 3.5rem (40-56px)2.25rem - 3rem (36-48px)Cards de serviços, benefícios
Em Botões1.25rem - 1.5rem (20-24px)1.125rem - 1.375rem (18-22px)1rem - 1.25rem (16-20px)Ícone ao lado de texto do botão
Inline (no texto)1.125rem - 1.25rem (18-20px)1rem - 1.125rem (16-18px)1rem - 1.125rem (16-18px)Ícone dentro de parágrafo
Redes Sociais1.5rem - 2rem (24-32px)1.375rem - 1.75rem (22-28px)1.25rem - 1.5rem (20-24px)Rodapé, links sociais
Logo2.5rem - 4rem (40-64px)2.25rem - 3.5rem (36-56px)2rem - 3rem (32-48px)Header, cabeçalho

Dica: Ícones Inline com EM

Por quê usar em para ícones inline:

/* ❌ Com rem (tamanho fixo) */
.icone-inline {
  font-size: 1.125rem; /* Sempre 18px */
}

/* ✅ Com em (escala com texto ao redor) */
.icone-inline {
  font-size: 1.2em; /* 120% do tamanho do texto pai */
}

Como usar: para um ícone que fica no meio de um texto, copie a segunda opção (font-size: 1.2em) e cole no CSS do ícone. Assim ele acompanha o tamanho do texto ao redor automaticamente. O 1.2 quer dizer "20% maior que o texto"; aumente para um ícone maior, diminua para um menor.

Vantagem: Ícone cresce/diminui junto com o texto automaticamente!


12.2. Cards em Grid - Dimensões Completas

Por Que Padronizar Cards?

Consistência visual = Profissionalismo

Cards do mesmo tamanho = Layout harmonioso e organizado

Tabela Completa - Cards de Serviços/Produtos

ElementoDesktopTabletMobileObservação
Imagem Altura15.625rem - 18.75rem (250-300px)13.75rem - 16.25rem (220-260px)12.5rem - 15rem (200-240px)Use aspect-ratio para manter proporção
Card Padding1.875rem (30px)1.5rem (24px)1.25rem (20px)Espaço interno confortável
Gap entre cards1.875rem (30px)1.5rem (24px)1.25rem (20px)Separação entre cards
Border Radius0.5rem - 1rem0.5rem - 1rem0.5rem - 1remCantos arredondados
Título Card (H3)1.5rem - 1.75rem1.375rem - 1.5rem1.25rem - 1.375remDestaque sem exagero
Descrição0.9375rem - 1rem0.875rem - 0.9375rem0.875rem - 1remLegível e confortável

Layout de Grid Responsivo

Desktop (3 colunas):

.grid-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.875rem;
}

Como usar: copie e cole no campo "CSS Personalizado" da página. Ele organiza os cards em 3 colunas iguais lado a lado, com um espaço entre eles. Para funcionar, o bloco que contém os cards precisa ter a classe grid-cards (aba "Avançado"). Quer 4 colunas? Troque o 3 por 4. Quer mais espaço entre os cards? Aumente o 1.875rem.

Tablet (2 colunas):

@media (max-width: 1024px) {
  .grid-cards {
    grid-template-columns: repeat(2, 1fr);
    gap: 1.5rem;
  }
}

Como usar: cole este trecho logo abaixo do anterior, no mesmo campo de CSS. Ele faz os cards passarem para 2 colunas quando a tela for de tablet (até 1024px de largura). Não precisa mudar nada; se quiser, ajuste o número de colunas no repeat(2, ...).

Mobile (1 coluna):

@media (max-width: 767px) {
  .grid-cards {
    grid-template-columns: 1fr;
    gap: 1.25rem;
  }
}

Como usar: cole este trecho junto dos anteriores, no mesmo campo de CSS. Ele faz os cards ficarem um embaixo do outro (uma coluna só) no celular, que é o ideal em telas pequenas. Não precisa mudar nada.

Grid Automático (Responsivo sem Media Queries!)

.grid-auto {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
  gap: clamp(1.25rem, 3vw, 1.875rem);
}
/* Colunas se ajustam automaticamente! */

Como usar: copie e cole no campo "CSS Personalizado" da página (o bloco dos cards precisa ter a classe grid-auto). A grande vantagem deste aqui é que ele ajusta o número de colunas sozinho conforme a tela, sem você precisar configurar tablet e celular separadamente. Quer cards mais largos? Aumente o 18rem. Pode deixar o resto como está.

Use auto-fit para grid que se adapta sozinho! Menos código, mais inteligente.

Aspect Ratio para Imagens em Cards

Por quê usar: Mantém proporção perfeita em qualquer tamanho!

/* Landscape 16:9 (vídeos, banners) */
.card-imagem {
  aspect-ratio: 16/9;
  object-fit: cover; /* Imagem preenche sem distorcer */
}

/* Quadrado 1:1 (produtos, perfis) */
.card-imagem {
  aspect-ratio: 1/1;
  object-fit: cover;
}

/* Retrato 4:5 (Instagram style) */
.card-imagem {
  aspect-ratio: 4/5;
  object-fit: cover;
}

Como usar: escolha o trecho da proporção que você quer (16/9 para imagens deitadas tipo vídeo, 1/1 para quadradas, 4/5 para em pé estilo Instagram), copie e cole no CSS da imagem do card (que precisa ter a classe card-imagem). Isso garante que todas as imagens fiquem na mesma proporção e bem cortadas, sem ficarem esticadas. Use só uma das três versões.


12.3. Tabelas de Referência Técnica Completa

Ícones - Valores Exatos por Breakpoint

TipoDesktop (rem)Desktop (px)Tablet (rem)Tablet (px)Mobile (rem)Mobile (px)
Decorativos3 - 448 - 642.5 - 3.540 - 562.25 - 336 - 48
Em Botões1.25 - 1.520 - 241.125 - 1.37518 - 221 - 1.2516 - 20
Redes Sociais1.5 - 224 - 321.375 - 1.7522 - 281.25 - 1.520 - 24
Inline1.2em-1.2em-1.2em-

Formulários - Valores Exatos por Breakpoint

PropriedadeDesktop (rem)Desktop (px)Tablet (rem)Tablet (px)Mobile (rem)Mobile (px)
Input Height3.125 - 3.550 - 563 - 3.2548 - 522.75 - 344 - 48
Input Padding0.75 1.2512 200.75 1.12512 180.625 110 16
Input Font1160.937515116
Gap entre campos1.25 - 1.520 - 241.125 - 1.2518 - 201 - 1.12516 - 18
Label Font0.875 - 114 - 160.8125 - 0.937513 - 150.875 - 114 - 16
Textarea Min-Height914481287112

Cards em Grid - Valores Exatos por Breakpoint

ElementoDesktop (rem)Desktop (px)Tablet (rem)Tablet (px)Mobile (rem)Mobile (px)
Imagem Altura15.625 - 18.75250 - 30013.75 - 16.25220 - 26012.5 - 15200 - 240
Card Padding1.875301.5241.2520
Gap1.875301.5241.2520
Título (H3)1.5 - 1.7524 - 281.375 - 1.522 - 241.25 - 1.37520 - 22
Descrição0.9375 - 115 - 160.875 - 0.937514 - 150.875 - 114 - 16

Botões - Valores Exatos Completos (REM e PX)

TamanhoBreakpointPadding (rem)Padding (px)Font (rem)Font (px)
LargeDesktop1.25 2.520 401.125 - 1.2518 - 20
LargeTablet1.125 2.2518 361.0625 - 1.187517 - 19
LargeMobile1 216 321 - 1.12516 - 18
MediumDesktop1 216 321 - 1.12516 - 18
MediumTablet0.875 1.7514 280.9375 - 1.062515 - 17
MediumMobile0.75 1.512 240.875 - 114 - 16
SmallDesktop0.75 1.512 240.875 - 114 - 16
SmallTablet0.625 1.2510 200.8125 - 0.937513 - 15
SmallMobile0.625 1.2510 200.8125 - 0.937513 - 15

13. Padrões de HTML Semântico

Por Que HTML Semântico?

Google lê HTML para entender seu site!

HTML semântico = Google entende = Melhor SEOTudo div genérica = Google confuso = SEO ruim

Tags Semânticas e Quando Usar

<header>

Quando usar: Cabeçalho do site (logo, menu)

Não confunda com <head> (metadados)

Elementor usa automaticamente se você marca seção como "Header"

<nav>

Quando usar: Menu de navegação

Exemplo: Menu principal, menu rodapé

Indica para Google: "Isso é navegação"

<main>

Quando usar: Conteúdo principal (apenas 1 por página!)

Exemplo: Todo conteúdo entre header e footer

Google prioriza conteúdo dentro de <main>

<section>

Quando usar: Cada seção temática

Exemplo: Sobre, Serviços, Depoimentos

Elementor gera automaticamente

<article>

Quando usar: Conteúdo independente (posts de blog)

Exemplo: Card de blog, notícia, produto

Indica conteúdo reutilizável

<footer>

Quando usar: Rodapé do site

Links úteis, copyright, redes sociais

Elementor marca automaticamente

Elementor cuida disso automaticamente! Mas entender ajuda a organizar melhor suas páginas.


14. Acessibilidade (A11y)

Por Que Acessibilidade?

  • Legal: Muitos países exigem por lei
  • Ético: 15% da população tem alguma deficiência
  • SEO: Google favorece sites acessíveis
  • Conversão: Mais gente consegue usar = mais vendas!

Checklist de Acessibilidade

✅ Contraste mínimo 4.5:1

Teste em WebAIM

✅ Textos alternativos em imagens

Como fazer: Elementor → Imagem → "Alt Text"

Exemplo: "Logo Easy Builder" ou "Screenshot do painel"

Por quê: Leitores de tela descrevem imagem para cegos

✅ Links descritivos

Errado: "Clique aqui"

Certo: "Baixe o manual do Easy Builder"

Por quê: Leitor de tela lê links fora de contexto

✅ Formulários com labels

Sempre use <label> associado ao campo!

Por quê: Leitores de tela precisam saber o que é cada campo

✅ Hierarquia de headings correta

H1 → H2 → H3 (sem pular!)

Navegação por headings é essencial para cegos

✅ Botões clicáveis (44x44px mínimo)

Dedos precisam de área suficiente!

Mobile: Botões com pelo menos 44px de altura


15. Checklist Antes de Publicar

Use este checklist TODA VEZ antes de entregar site:

✅ 1. Nomenclatura

  • Todos containers principais nomeados
  • Botões importantes com nomes claros
  • Fácil de encontrar elementos

✅ 2. Responsividade Testada

  • Desktop: OK
  • Tablet: OK
  • Mobile: TESTADO EM CELULAR REAL!

✅ 3. Imagens Otimizadas

  • Formato AVIF ou WebP
  • Compressão 60-80%
  • Tamanhos corretos
  • Alt text preenchido

✅ 4. Tipografia Consistente

  • H1 único
  • Hierarquia H1→H2→H3 correta
  • Tamanhos seguem padrão
  • Legível em todos dispositivos

✅ 5. Espaçamentos Harmoniosos

  • Múltiplos de 0.5rem (8px)
  • Consistente entre seções similares
  • Não tem espaços gigantes nem apertados demais

✅ 6. Contraste Adequado

  • Testado em WebAIM Contrast Checker
  • Mínimo 4.5:1 para texto normal
  • Texto legível em fundos coloridos

✅ 7. Links Funcionando

  • Todos botões linkam corretamente
  • WhatsApp com número certo
  • Links externos abrem em nova aba
  • Links internos funcionam

✅ 8. Formulários Testados

  • Campos com tamanho adequado (min 44px altura mobile)
  • Labels preenchidas
  • Placeholder como exemplo
  • Validação funcionando
  • Envia para email correto

✅ 9. Performance Otimizada

  • CSS regenerado (Elementor → Tools)
  • Widgets não usados desabilitados
  • Fontes do Google: máximo 3 famílias
  • Vídeos com lazy load

✅ 10. SEO Básico

  • Título da página preenchido
  • Meta description preenchida (Yoast SEO)
  • Headings com hierarquia correta
  • URLs amigáveis (sem "pagina-123")

Se passou em todos 10 itens = Site profissional pronto para entregar!


16. Erros Comuns e Como Evitar

❌ Não testar em mobile real

Erro: Confiar só no preview do Elementor

Por quê é problema: Preview não mostra 100% real (especialmente animações, fontes, scroll)

Solução:

  1. Publique página (pode ser privada)
  2. Acesse do seu celular
  3. Teste tudo: scroll, cliques, formulários
  4. Use DevTools do Chrome (F12 → Toggle Device Toolbar)
❌ Abusar de animações

Erro: Animar tudo (títulos, textos, imagens, botões)

Por quê é problema:

  • Site fica lento (especialmente mobile)
  • Distrai ao invés de guiar
  • Parece amador

Solução:

  • Anime APENAS: Hero, CTAs principais, cards importantes
  • Use animações sutis (fade-in, slide-up)
  • Evite animações longas (máximo 0.5s)
❌ Não otimizar imagens

Erro: Subir fotos direto da câmera (5-10MB cada!)

Por quê é problema:

  • Site MUITO lento
  • Cliente perde vendas (gente desiste de esperar)
  • Gasta banda do servidor

Solução:

  1. SEMPRE converta para AVIF ou WebP
  2. Use Squoosh.app
  3. Qualidade 60-80% (invisível ao olho nu!)
  4. Redimensione para tamanho certo (não use 4K para thumbnail!)
❌ Não nomear elementos

Erro: Deixar tudo como "Container", "Coluna", "Section"

Por quê é problema:

  • Impossível achar elemento depois
  • Perde tempo clicando em tudo
  • Dificulta manutenção

Solução:

  • Nomeie TODOS containers principais
  • Use padrão: tipo-funcao-identificador
  • Exemplo: container-hero, btn-cta-whatsapp
❌ Usar position: absolute demais

Erro: Posicionar tudo com position: absolute

Por quê é problema:

  • Quebra TUDO no mobile
  • Elementos sobrepõem
  • Difícil de manter

Solução:

  • Use Flexbox ou CSS Grid
  • Position absolute SÓ para casos específicos (badges, overlays)
❌ Copiar CSS sem entender

Erro: Copiar código do Google e colar sem ler

Por quê é problema:

  • Pode conflitar com outros estilos
  • Pode quebrar responsividade
  • Difícil de debugar depois

Solução:

  • Use Easy Coder IA (gera código explicado!)
  • Leia código antes de colar
  • Teste após adicionar
  • Comente código complexo
❌ Múltiplas fontes do Google

Erro: Carregar 5-10 famílias de fontes diferentes

Por quê é problema:

  • Cada fonte = +100-200kb
  • Site fica lento
  • Poluição visual (muitas fontes diferentes)

Solução:

  • Máximo 2-3 famílias
  • Máximo 4-5 pesos por família
  • Exemplo: Roboto (400, 700) + Montserrat (600, 800)

17. Padrões de Código CSS Avançado

Animações e Transições

Quando adicionar animações:

  • ✅ Hover em botões (feedback visual)
  • ✅ Entrada de elementos (scroll-triggered)
  • ✅ Modais/popups (abertura/fechamento)

Código padrão de animação:

/* ============================================
   BOTÃO COM HOVER SUAVE
   ============================================ */
.btn-cta {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  border: none;
  color: white;
  padding: 1rem 2rem;
  border-radius: 0.5rem;

  /* Transição suave */
  transition: all 0.3s ease;

  /* Otimização de performance */
  will-change: transform;
}

.btn-cta:hover {
  /* Levanta botão */
  transform: translateY(-3px);

  /* Adiciona sombra */
  box-shadow: 0 10px 25px rgba(102, 126, 234, 0.3);
}

/* ============================================
   CARD QUE CRESCE NO HOVER
   ============================================ */
.card-servico {
  background: white;
  padding: 2rem;
  border-radius: 1rem;
  border: 1px solid #e5e5e5;

  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.card-servico:hover {
  transform: scale(1.05); /* Cresce 5% */
  box-shadow: 0 20px 40px rgba(0,0,0,0.1);
}

/* ============================================
   GRADIENTE ANIMADO (FUNDO)
   ============================================ */
.hero-gradiente {
  background: linear-gradient(
    270deg,
    #667eea,
    #764ba2,
    #f093fb,
    #4facfe
  );
  background-size: 400% 400%;
  animation: gradient-shift 15s ease infinite;
}

@keyframes gradient-shift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

Como usar: copie a parte que você quiser e cole no campo "CSS Personalizado" da página. São três efeitos prontos: um botão que sobe ao passar o mouse (classe btn-cta), um card que cresce um pouco ao passar o mouse (classe card-servico) e um fundo com cores que se movem sozinhas (classe hero-gradiente). Lembre de colocar a classe certa no elemento, na aba "Avançado". Quer outras cores? Troque os códigos de cor (#667eea, #764ba2 e os demais).

Efeitos Visuais Comuns

Sombras

Quando usar: Cards, botões elevados, modais

```css
/* Sombra sutil (cards) */
box-shadow: 0 4px 6px rgba(0,0,0,0.1);

/* Sombra média (hover) */
box-shadow: 0 10px 25px rgba(0,0,0,0.15);

/* Sombra forte (modais) */
box-shadow: 0 25px 50px rgba(0,0,0,0.25);
```

Como usar: escolha uma das três linhas (sutil, média ou forte), copie e cole no CSS do elemento que você quer dar profundidade. Quanto maiores os números, mais "alta" e espalhada fica a sombra. O último valor (o 0.1, por exemplo) controla a transparência: quanto menor, mais suave a sombra.

Dica: Use Box Shadow Generator

Blur (Desfoque)

Quando usar: Fundos de texto, glassmorphism

```css
/* Fundo desfocado atrás de texto */
.texto-sobre-imagem {
  background: rgba(255,255,255,0.1);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  padding: 2rem;
  border-radius: 1rem;
}
```

Como usar: copie e cole no CSS do bloco que vai ficar por cima de uma imagem (ele precisa ter a classe texto-sobre-imagem). O resultado é aquele efeito de "vidro fosco": o fundo fica meio borrado e o texto por cima fica legível. Quer mais desfoque? Aumente o 10px.

Resultado: Efeito vidro fosco moderno!

Gradientes

Quando usar: Botões, fundos de hero, overlays

```css
/* Gradiente linear (esquerda → direita) */
background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);

/* Gradiente diagonal */
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);

/* Gradiente radial (centro para fora) */
background: radial-gradient(circle, #667eea 0%, #764ba2 100%);

/* Gradiente em texto */
background: linear-gradient(135deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
```

Como usar: escolha o tipo de degradê que quiser (reto, diagonal, do centro para fora, ou aplicado dentro do texto), copie e cole no CSS do elemento. Troque os dois códigos de cor (#667eea e #764ba2) pelas cores que você quer misturar. No degradê reto, o número com deg muda a direção (90 = da esquerda para a direita).

Gerador: CSS Gradient


18. Meta Tags e SEO

O Que São Meta Tags?

Meta tags = informações SOBRE a página (invisíveis para visitantes, visíveis para Google)

Meta Tags Essenciais

Title Tag (Título da Página)

O que é: Título que aparece na aba do navegador e no Google

Como configurar:

  • Yoast SEO → "Título SEO"
  • Ou Elementor → Configurações da Página → SEO

Regras:

  • Máximo 60 caracteres
  • Inclui palavra-chave principal
  • Atrativo para clicar

Exemplo BOM: ✅ "Easy Builder - Crie Sites Profissionais em Horas | WordPress"

Exemplo RUIM: ❌ "Home" (genérico demais!) ❌ "Easy Builder é a melhor ferramenta do mundo para criar sites incríveis..." (longo demais!)

Meta Description (Descrição)

O que é: Texto que aparece abaixo do título no Google

Como configurar:

  • Yoast SEO → "Meta Description"

Regras:

  • Máximo 155 caracteres
  • Resumo atrativo da página
  • Inclui benefício ou CTA

Exemplo BOM: ✅ "Crie landing pages e sites profissionais com Easy Builder. Templates prontos, IA integrada e suporte 24/7. Comece grátis hoje!"

Exemplo RUIM: ❌ "Página inicial do Easy Builder." (sem benefício!)

Open Graph (Redes Sociais)

O que é: Como página aparece ao compartilhar no Facebook, LinkedIn, WhatsApp

Como configurar:

  • Yoast SEO → "Social"
  • Defina título, descrição e imagem

Imagem OG recomendada:

  • Tamanho: 1200x630px
  • Formato: JPG ou PNG (redes sociais não suportam WebP bem)
  • Com texto/logo visível

Por quê importante: Compartilhamento bonito = mais cliques!


19. Conversão Rápida: REM ↔ PX

Tabela de Conversão

Pequenos

  • 0.5rem = 8px
  • 0.75rem = 12px
  • 1rem = 16px
  • 1.25rem = 20px
  • 1.5rem = 24px

Médios

  • 2rem = 32px
  • 2.5rem = 40px
  • 3rem = 48px
  • 3.5rem = 56px
  • 4rem = 64px

Grandes

  • 5rem = 80px
  • 6rem = 96px
  • 7.5rem = 120px
  • 10rem = 160px

Quando Usar Cada Unidade

UnidadeQuando UsarExemploPor Quê?
remFontes, espaçamentos, padding, marginfont-size: 1remRelativo ao root (escalável)
emElementos que escalam com paiicon-size: 1.2emEscala com elemento pai
%Larguras de containers, colunaswidth: 50%Relativo ao elemento pai
vwElementos que escalam com largura da telafont-size: 5vwRelativo à viewport width
vhAlturas full-screenmin-height: 100vhRelativo à viewport height
pxBordas, valores fixos críticosborder: 1px solidValor absoluto e fixo

Evite px para textos e espaçamentos! Use rem para melhor responsividade.


20. Ferramentas Essenciais

Squoosh

Converter imagens

JPEG/PNG → AVIF/WebP

Grátis e rápido!

Contrast Checker

Testar contraste

Garante legibilidade

WCAG compliance

Google Fonts

Biblioteca de fontes

900+ fontes gratuitas

Já integrado no Elementor

CSS Gradient

Gerar gradientes

Visual e código pronto

Copy/paste fácil

Box Shadow Generator

Gerar sombras

Preview em tempo real

Código CSS pronto

Grid Generator

CSS Grid visual

Cria grid responsivo

Código automático

Can I Use

Compatibilidade

Verifica suporte CSS/JS

Em navegadores

PageSpeed Insights

Testar performance

Google oficial

Dicas de otimização

Meta Tags Generator

Gerar Open Graph

Preview social media

Código pronto


Resumo Executivo: Referência Rápida

Imagens

Formatos:

  • 1ª: AVIF (50-70%)
  • 2ª: WebP (60-80%)
  • SVG (logos/ícones)

Tamanhos:

  • Hero: 1920px (desktop) / 1080px (mobile)
  • Conteúdo: 1200px
  • Cards: 600px

Tipografia

Tamanhos (Desktop → Mobile):

  • H1: 3rem → 1.75rem
  • H2: 2.25rem → 1.5rem
  • Texto: 1rem → 0.875rem

Line-height:

  • Headings: 1.2-1.3
  • Texto: 1.6-1.8

Espaçamentos

Sistema:

  • Múltiplos de 0.5rem (8px)
  • XS/S/M/L/XL/XXL/XXXL

Entre seções:

  • Desktop: 5-7.5rem
  • Mobile: 2.5-3.75rem

Botões

Médio (padrão):

  • Padding: 1rem 2rem
  • Font: 1rem
  • Mobile: Full width

Altura mínima mobile: 44px (dedos!)

Cores

Contraste mínimo:

  • Texto normal: 4.5:1
  • Texto grande: 3:1

Teste em: webaim.org/contrast

SEO

Essencial:

  • 1 H1 por página
  • Hierarquia H1→H2→H3
  • Title: 60 caracteres
  • Description: 155 caracteres
  • Alt text em imagens

Aplicando no Easy Builder

Para o Time Easy Builder:

Ao criar templates, siga TODOS esses padrões. Templates que não seguem voltam para revisão!

Para Usuários:

Templates já vêm com esses padrões aplicados! Ao personalizar, mantenha os mesmos padrões para qualidade profissional.

Este guia é vivo! Será atualizado conforme novas práticas surgirem. Versão atual: 3.0 (Janeiro 2026)

Próximos Passos

Workflows Avançados

Técnicas profissionais de produção

Resolução de Problemas

Solucione erros comuns rapidamente

Iniciante WordPress

Trilha completa de aprendizado

Easy Coder IA

IA que escreve código CSS/JS para você