0Pricing
HTML Academy · Aula

API IntersectionObserver e limiares

Crie observadores e configure limiares de visibilidade.

API IntersectionObserver e limiares é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.

O que IntersectionObserver faz

IntersectionObserver executa funções de retorno quando um elemento entra ou sai da área visível (ou de outro contêiner de rolagem). É a alternativa moderna e eficiente aos ouvintes de rolagem — o navegador faz os cálculos, e seu código é executado apenas em transições reais de visibilidade.

Criação

new IntersectionObserver(callback, options) cria um observador. A função de retorno recebe uma matriz de entradas quando as interseções mudam; as opções controlam qual contêiner é observado e em quais limiares.

const observer = new IntersectionObserver((entries) => {
  for (const entry of entries) {
    if (entry.isIntersecting) {
      console.log("Visible:", entry.target);
    }
  }
});
observer.observe(document.querySelector(".hero"));

O IntersectionObserverEntry

Cada entry possui target (o elemento observado), isIntersecting (booleano), intersectionRatio (de 0 a 1), boundingClientRect, intersectionRect e time. Use isIntersecting para verificações binárias de visibilidade; intersectionRatio para lógica baseada no percentual visível.

A opção de limiar

{ threshold: 0.5 } executa a função de retorno sempre que a razão de interseção ultrapassa 50%. Use uma matriz [0, 0.25, 0.5, 0.75, 1] para executar a função em cada quarto — útil para criar indicadores de progresso ou análises que informem a "% visível".

A opção de raiz

Por padrão, o observador mede a interseção com a área visível. Defina root: someScrollableDiv para medir em relação a um contêiner de rolagem interno — por exemplo, uma lista virtualizada dentro de um elemento com altura fixa.

A opção rootMargin

rootMargin: "200px" aumenta a área observada em 200 pixels de cada lado. Use-o para disparar antes (começar a carregar imagens 200 pixels antes de entrarem na área visível) ou depois (disparar apenas quando tiverem passado totalmente pela área visível).

new IntersectionObserver(callback, {
  rootMargin: "0px 0px 200px 0px",
  threshold: 0
});

observe e unobserve

observer.observe(element) inicia o monitoramento de um elemento; observer.unobserve(element) o interrompe. Sempre deixe de observar quando não precisar mais da função de retorno (por exemplo, depois que o carregamento sob demanda for acionado uma vez), para liberar memória.

Desconexão

observer.disconnect() interrompe o monitoramento de todos os elementos observados. Chame-o quando o componente for desmontado ou quando o observador não for mais necessário — isso evita vazamentos causados por observadores que permaneçam ativos além do caso de uso.

Entrega assíncrona

As funções de retorno são entregues de forma assíncrona e agrupada — muitas mudanças de interseção durante uma rolagem rápida geram uma única chamada de retorno com todas as entradas, não uma por elemento. Isso representa um grande ganho de desempenho em comparação com ouvintes de rolagem, que são acionados em cada evento de rolagem.

A função de retorno inicial é executada imediatamente

Quando um novo elemento é observado, a função de retorno é executada uma vez quase imediatamente com o estado atual — isso é útil para lidar com elementos que já estão visíveis no momento em que a observação começa, sem um caminho especial de inicialização.

Casos de uso comuns

Carregamento sob demanda de imagens, acionamento de animações quando entram na área visível durante a rolagem, rolagem infinita (observe um sentinel próximo ao fim da lista), acompanhamento de quais artigos o usuário realmente leu e alternância de cabeçalho fixo com base na visibilidade do elemento principal.

Verificação de conhecimentos

Qual é a diferença entre limiar: 0 e limiar: 1 em um IntersectionObserver?

Resumo

IntersectionObserver executa funções de retorno nas transições de visibilidade dos elementos, com desempenho e agrupamento integrados — substitua os ouvintes de rolagem por ele para implementar lógica de visibilidade. Configure-o com um limiar (de 0 a 1 ou uma matriz), uma raiz (contêiner de rolagem personalizado) e rootMargin (para aumentar ou reduzir a área observada). Use observe/unobserve em elementos específicos; a desconexão limpa tudo.

Perguntas Frequentes

A aula “API IntersectionObserver e limiares” é grátis?

Sim — o texto completo de “API IntersectionObserver e limiares” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.

O que vou aprender em “API IntersectionObserver e limiares”?

Crie observadores e configure limiares de visibilidade. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar HTML Academy?

Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “API IntersectionObserver e limiares”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de HTML Academy?

Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. API IntersectionObserver e limiares
  2. Carregamento tardio com IntersectionObserver
  3. Implementação de rolagem infinita
  4. Configuração de animações vinculadas à rolagem
← Voltar para HTML Academy