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

Capa do artigo Programação Web: window, viewport, e eventos no navegador

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:

resizeOcorre quando a janela do navegador é redimensionada.scrollOcorre quando o usuário rola a página (ou um elemento com rolagem interna).loadOcorre quando a página é completamente carregada, incluindo todos os recursos como imagens e estilos.unloadOcorre quando a página está prestes a ser descarregada (navegação para outra página ou fechamento da aba).beforeunloadOcorre 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.focusOcorre quando a janela ganha foco, ou seja, quando se torna a janela ativa no navegador.blurOcorre quando a janela perde o foco, ou seja, quando outra janela ou aba se torna ativa.keydownOcorre quando uma tecla é pressionada enquanto a janela tem o foco.keyupOcorre quando uma tecla é liberada após ser pressionada.clickOcorre quando o mouse é clicado em qualquer lugar da janela.dblclickOcorre quando ocorre um clique duplo na janela.orientationchangeOcorre quando a orientação do dispositivo muda (de retrato para paisagem ou vice-versa).visibilitychangeOcorre quando o estado de visibilidade da página muda, como quando a aba do navegador perde ou ganha o foco.storageOcorre 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.

Para comentários:

Se quiser comentar, sugerir (acréscimos, retificações etc), criticar, elogiar, informar, sobre algum trecho deste artigo, peço a gentileza de utilizar a área de comentários do abaixo informada, no Youtube.

Já existe uma mensagem por lá dedicada a comentários sobre temas publicados neste portal.

Essa também é uma forma de contribuir com o trabalho e estimular sua continuidade e aprimoramento.

Peço a gentileza de comentar, curtir e compartilhar o conteúdo, além de se inscrever no canal do Youtube e ativar o sino de notificações para receber notícias de novos conteúdos.

Agradeço desde já!

Destinado para esses comentários em geral:

https://www.youtube.com/@roberto_csantos/community