Módulo 2 · 4 de 9

JavaScript: quando o design ganha vida

Leitura: ~4 min

Você já tem o roteiro (HTML) e a direção de arte (CSS). Mas a peça de teatro ainda está parada. Ninguém se move, ninguém reage, ninguém improvisa. É aí que entra o JavaScript: ele é a atuação. Sem ele, a interface é um cartaz bonito mas estático. Com ele, o produto respira, responde e se adapta ao que o usuário faz.

O que é JavaScript

JavaScript (ou simplesmente JS) é a linguagem de programação da web. É ela que faz as coisas acontecerem na tela. Quando você clica em um botão e um menu abre, é JavaScript. Quando um formulário valida se o e-mail está correto antes de você enviar, é JavaScript. Quando novos dados aparecem na tela sem recarregar a página, como o feed do Instagram rolando infinitamente, é JavaScript.

Diferente do HTML e do CSS, o JavaScript é uma linguagem de programação de verdade. Ele tem lógica, condições ("se o usuário clicar aqui, faça isso"), loops ("repita isso para cada item da lista") e eventos ("quando acontecer isso, execute aquilo"). Não se assuste: você não precisa aprender a programar em JavaScript. Precisa entender o que ele faz e quando ele entra em cena no produto que você projeta.

Eventos: o JavaScript reage ao que o usuário faz

O conceito mais importante do JavaScript para designers é o de eventos. Um evento é qualquer coisa que o usuário faz: clicar, passar o mouse, rolar a página, digitar, arrastar. O JavaScript "escuta" esses eventos e executa uma ação em resposta.

Os eventos mais comuns que afetam o seu design:

  • Click : o mais básico. O usuário clica e algo acontece: um modal abre, um menu expande, um item é adicionado ao carrinho.
  • Hover : o cursor passa sobre um elemento. Pode mostrar uma prévia carregada do servidor (a miniatura de vídeo que dá play sozinha) ou abrir um menu com conteúdo dinâmico. Mudar a cor de um botão ou exibir um tooltip simples dispensa JavaScript: é CSS puro, via o seletor :hover.
  • Scroll : o usuário rola a página. Pode disparar animações, carregar mais conteúdo (infinite scroll), ou esconder e encolher o header conforme a direção da rolagem. (Só fixar um menu no topo, o sticky header simples, hoje dispensa JavaScript: é CSS puro, com position: sticky.)
  • Input : o usuário digita em um campo. Pode ativar validação em tempo real, autocompletar sugestões, ou contar caracteres.
  • Submit : o usuário envia um formulário. Pode mostrar um loading, validar campos, ou redirecionar para outra página.

Quando você projeta uma interação no Figma (aquele protótipo com transições, overlays e estados) você está essencialmente descrevendo eventos. A diferença é que no Figma, você conecta telas com setas. No código, o JavaScript conecta eventos a ações.

Antes de olhar o diagrama abaixo, uma sigla nova: DOM (Document Object Model). É o nome que o navegador dá para a árvore de elementos da página, aquela mesma hierarquia de tags do HTML que você viu duas páginas atrás. Quando dizemos que o JavaScript "atualiza o DOM", significa que ele mexe nessa árvore ao vivo: muda um texto, adiciona um elemento, dispara uma animação.

Fluxo de um evento JavaScript Usuário clica no botão evento dispara Event Listener (JS) escuta o click e executa a ação DOM atualizado Texto muda "Adicionado!" Elemento aparece modal, menu, toast Animação roda transição, feedback Cada interação que você projeta no Figma segue esse fluxo no código. Evento do usuário → JavaScript escuta → Interface reage.
Fluxo de um evento JavaScript: o usuário interage, o event listener captura a ação, e o DOM é atualizado com mudanças visíveis na interface.

Micro-interações: onde o JS mais importa para o designer

As micro-interações são os pequenos momentos de feedback que fazem um produto parecer vivo. O botão que pulsa ao ser clicado. O toggle que desliza suavemente. O badge de notificação que aparece com uma animação sutil. O skeleton loading que mostra a forma do conteúdo antes dele carregar.

Algumas dessas animações podem ser feitas só com CSS (transições simples, hovers, mudanças de cor). Mas as mais complexas (as que dependem de lógica, de dados, de timing) precisam de JavaScript. E esse é um ponto importante para a sua conversa com o dev:

  • Se é uma transição visual simples (cor, opacidade, posição) → provavelmente é só CSS
  • Se depende de uma condição ("só anima se o usuário já logou") → precisa de JavaScript
  • Se precisa buscar dados ("carregar mais itens ao rolar") → precisa de JavaScript
  • Se é uma animação complexa com múltiplos passos → provavelmente precisa de JavaScript + CSS

Saber essa diferença evita aquela situação de projetar uma animação linda e o dev dizer "isso vai levar duas sprints a mais" (sprint é o ciclo de trabalho dos times, em geral duas semanas; duas sprints = um mês). Nem tudo que você imagina no protótipo é simples de implementar, mas se você entende o porquê, a conversa muda.

Ferramentas visuais que usam JavaScript por baixo

Aqui vai algo que pode surpreender: se você já usou Framer, Webflow, ou até as interações avançadas do Figma, você já trabalhou com conceitos de JavaScript sem escrever uma linha de código.

O Framer permite criar componentes interativos com lógica condicional, estados, animações, tudo com uma interface visual. Por baixo, tudo isso é JavaScript (mais exatamente React, uma biblioteca: uma base de código pronta que os devs usam para construir interfaces sem começar do zero). O Webflow permite criar interações baseadas em scroll, click e hover, tudo visual, mas que gera JavaScript real.

Essas ferramentas são o meio-termo perfeito para designers que querem entender interatividade sem mergulhar no código. Você aprende os conceitos (eventos, estados, condições) em um ambiente visual que você já domina. E quando precisar explicar para o dev o que quer, os termos vão fazer sentido para os dois.

Quando o designer precisa saber JavaScript?

Vamos ser práticos. Você não precisa aprender JavaScript para ser um bom designer. Mas existem situações em que saber o básico faz diferença:

  • Prototipagem avançada : se você usa Framer ou ferramentas similares, entender a lógica do JS vai te dar mais controle sobre o resultado.
  • Comunicação com devs : se você sabe dizer "esse componente precisa de um evento de click que alterna entre dois estados", o dev entende na hora o que fazer.
  • Definindo micro-interações : se você entende a diferença entre animação CSS e animação JS, pode propor soluções mais realistas desde o protótipo.
  • Portfólio diferenciado : Product Designers que entendem de interatividade e lógica de interface se destacam em processos seletivos.

Checagem rápida

Sem nota, sem pressão. Responda de cabeça e depois abra para conferir.

Um colega pergunta o que você quer dizer com "evento" quando descreve uma interação. Como você explica em uma frase?

Evento é qualquer coisa que o usuário faz e que a interface pode escutar: um clique, um hover, uma rolagem, uma digitação. O JavaScript fica ouvindo esses eventos e executa uma ação em resposta, tipo abrir um modal quando alguém clica no botão.

No handoff você pede duas coisas: mudar a cor de um link ao passar o mouse e carregar mais produtos quando o usuário chega no fim da lista. O dev diz que uma é "de graça" e a outra dá trabalho. Qual é qual, e por quê?

O hover que só troca a cor é CSS puro, resolvido com o seletor :hover, sem lógica nem JavaScript. Já carregar mais produtos precisa buscar dados no servidor e decidir quando fazer isso, então exige JavaScript. A regra prática: mudança visual simples costuma ser CSS; buscar dados ou depender de uma condição pede JavaScript.