Programação Web: window, viewport, e eventos no navegador
09/03/2025
Sobre a janela do navegador e da área de visualização. Discute eventos importantes como resize, scroll, e outros em desenvolvimento web. Id: 11

O que é o window
?
O window
é um objeto global do JavaScript que representa a janela do navegador. Ele fornece uma interface para interagir com a página, permitindo o controle sobre o histórico, a navegação, o armazenamento e a manipulação do DOM. Esse objeto também contém o document
, que representa o conteúdo da página HTML, além de fornecer acesso a métodos e propriedades essenciais como window.innerWidth
, window.innerHeight
, window.scrollY
, e muito mais.
Propriedades principais do window
- window.innerWidth e window.innerHeight: representam a largura e altura da janela do navegador, ou seja, do espaço visível onde o conteúdo da página é exibido (também conhecido como
viewport
). - window.scrollY e window.scrollX: fornecem as coordenadas de rolagem vertical e horizontal da página.
- window.location: fornece informações sobre o URL atual da página, permitindo a modificação da URL ou a navegação para outras páginas.
O que é o viewport
?
O viewport
é a área visível da janela do navegador onde o conteúdo da página é exibido. Seu tamanho pode variar dependendo das dimensões da janela, da resolução da tela e do dispositivo utilizado (desktop, tablet ou celular). No entanto, ao contrário do window
, que representa a janela do navegador, o viewport
se refere à área onde a página web é renderizada.
Diferença entre window
e viewport
A principal diferença entre o window
e o viewport
é que o window
abrange não apenas o espaço visível da página, mas também inclui barras de rolagem, bordas e outros elementos da interface do navegador. Já o viewport
refere-se apenas ao espaço onde o conteúdo da página é exibido, sem contar com as barras de rolagem ou margens.
Uma maneira simples de visualizá-los é pensar no window
como a "janela" inteira do navegador, enquanto o viewport
é o "quadro" dentro da janela onde a página é exibida.
Tamanho fixo e dependente do dispositivo
O tamanho do viewport
é altamente dependente do dispositivo em uso. Em um desktop, o viewport
pode ter um tamanho fixo de, por exemplo, 1366px x 768px, enquanto em dispositivos móveis ele será adaptado para diferentes tamanhos de tela. Já o tamanho do window
pode variar conforme o comportamento do usuário, como ao redimensionar a janela, mas nunca será menor que o viewport
.
Eventos relacionados ao window
Os eventos relacionados ao window
e ao viewport
são essenciais para criar páginas interativas que respondem dinamicamente às mudanças feitas pelo usuário, como redimensionamento da janela, rolagem da página, entre outros. Aqui está uma lista dos principais eventos que você pode usar:
resize
Ocorre quando a janela do navegador é redimensionada.scroll
Ocorre quando o usuário rola a página (ou um elemento com rolagem interna).load
Ocorre quando a página é completamente carregada, incluindo todos os recursos como imagens e estilos.unload
Ocorre quando a página está prestes a ser descarregada (navegação para outra página ou fechamento da aba).beforeunload
Ocorre antes de a página ser descarregada. Pode ser usado para pedir confirmação ao usuário antes de sair ou perder dados não salvos.focus
Ocorre quando a janela ganha foco, ou seja, quando se torna a janela ativa no navegador.blur
Ocorre quando a janela perde o foco, ou seja, quando outra janela ou aba se torna ativa.keydown
Ocorre quando uma tecla é pressionada enquanto a janela tem o foco.keyup
Ocorre quando uma tecla é liberada após ser pressionada.click
Ocorre quando o mouse é clicado em qualquer lugar da janela.dblclick
Ocorre quando ocorre um clique duplo na janela.orientationchange
Ocorre quando a orientação do dispositivo muda (de retrato para paisagem ou vice-versa).visibilitychange
Ocorre quando o estado de visibilidade da página muda, como quando a aba do navegador perde ou ganha o foco.storage
Ocorre quando há alterações no armazenamento local (localStorage
ou sessionStorage
).Exemplos de uso
Confira como você pode utilizar esses eventos no código:
import { useEffect } from 'react';const MyComponent = () => {useEffect(() => {const handleResize = () => {console.log('Tamanho da janela:', window.innerWidth, window.innerHeight);};window.addEventListener('resize', handleResize);return () => window.removeEventListener('resize', handleResize);}, []);return <div>Conteúdo da página</div>;};
Conclusão
Compreender o comportamento do window
, do viewport
e os eventos que ocorrem em uma página web é essencial para o desenvolvimento de interfaces responsivas e interativas. Utilizando esses conceitos corretamente, você pode criar experiências de usuário mais ricas e eficientes, além de otimizar a performance do seu site.