Neste artigo você vai aprender a como detectar resolução da tela com JavaScript, vem conferir como é simples fazer isso!

detectar resolução da tela com JavaScript capa

Fala programador(a), beleza? Bora aprender mais sobre JavaScript!

Introdução

A resolução da tela é uma medida importante quando se trata de desenvolver aplicativos e sites responsivos.

A resolução da tela refere-se ao número total de pixels na tela, geralmente expressa como a largura e a altura em pixels.

Ao detectar a resolução da tela, os desenvolvedores podem ajustar o layout e a funcionalidade de seus aplicativos para oferecer uma experiência de usuário otimizada em diferentes dispositivos e tamanhos de tela.

Neste artigo, vamos explorar como detectar a resolução da tela com JavaScript.

Acessando a resolução da tela com window.screen

A maneira mais simples de detectar a resolução da tela com JavaScript é acessar as propriedades width e height do objeto window.screen.

Essas propriedades retornam a largura e a altura totais da tela em pixels.

const screenWidth = window.screen.width;
const screenHeight = window.screen.height;

console.log(`Resolução da tela: ${screenWidth}x${screenHeight}`);

Este exemplo exibe a resolução da tela no formato “Resolução da tela: largura x altura”.

Observe que as propriedades width e height do objeto window.screen retornam a resolução real do dispositivo, não a resolução do navegador ou da janela de visualização.

Acessando a resolução da janela de visualização com window.innerWidth e window.innerHeight

Se você deseja detectar a resolução da janela de visualização do navegador em vez da resolução da tela, pode usar as propriedades window.innerWidth e window.innerHeight.

Essas propriedades retornam a largura e a altura da área de conteúdo da janela de visualização, incluindo barras de rolagem, se houver.

const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;

console.log(`Resolução da janela de visualização: ${viewportWidth}x${viewportHeight}`);

Este exemplo exibe a resolução da janela de visualização no formato “Resolução da janela de visualização: largura x altura”.

Observe que as propriedades window.innerWidth e window.innerHeight podem mudar quando o usuário redimensiona a janela do navegador.

Ouvindo eventos de redimensionamento da janela

Em muitos casos, você pode querer ajustar seu aplicativo dinamicamente quando a resolução da tela ou da janela de visualização muda.

Para fazer isso, você pode adicionar um ouvinte de evento para o evento resize da janela.

window.addEventListener("resize", () => {
  const viewportWidth = window.innerWidth;
  const viewportHeight = window.innerHeight;

  console.log(`Resolução da janela de visualização: ${viewportWidth}x${viewportHeight}`);
});

Este exemplo adiciona um ouvinte de evento que é chamado sempre que a janela do navegador é redimensionada.

Ele exibe a resolução atual da janela de visualização no formato “Resolução da janela de visualização: largura x altura”.

Considerações de desempenho

Ao detectar a resolução da tela com JavaScript e ajustar seu aplicativo dinamicamente, é importante considerar o desempenho.

Ouvir eventos de redimensionamento da janela e atualizar o layout e a funcionalidade do aplicativo pode ser intensivo em recursos, especialmente se a janela for redimensionada com frequência ou se o aplicativo for complexo.

Aqui estão algumas dicas para melhorar o desempenho ao lidar com a resolução da tela:

Throttling e Debouncing

Throttling e debouncing são técnicas que ajudam a limitar a taxa de chamadas de uma função.

Ao utilizar essas técnicas, você pode garantir que seu aplicativo não seja sobrecarregado com chamadas desnecessárias de função durante eventos de redimensionamento.

Throttling limita a taxa de chamadas de função, garantindo que a função seja chamada no máximo uma vez a cada ‘x’ milissegundos.

Debouncing, por outro lado, agrupa várias chamadas de função juntas e chama a função apenas uma vez após um determinado intervalo de tempo ter passado.

function debounce(func, wait) {
  let timeout;
  return function () {
    const context = this;
    const args = arguments;
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      func.apply(context, args);
    }, wait);
  };
}

window.addEventListener(
  "resize",
  debounce(() => {
    const viewportWidth = window.innerWidth;
    const viewportHeight = window.innerHeight;

    console.log(`Resolução da janela de visualização: ${viewportWidth}x${viewportHeight}`);
  }, 250)
);

Neste exemplo, a função debounce é usada para limitar a taxa de chamadas do ouvinte de evento de redimensionamento.

Atualizações seletivas

Em vez de atualizar todo o layout e a funcionalidade do aplicativo a cada evento de redimensionamento, considere atualizar apenas os elementos que são afetados pela mudança na resolução.

Isso pode melhorar significativamente o desempenho e reduzir a carga na CPU.

Quer aprender mais sobre JavaScript? Confira o vídeo abaixo:

Conclusão

Neste artigo, exploramos como detectar a resolução da tela e da janela de visualização com JavaScript e como ajustar o layout e a funcionalidade do aplicativo dinamicamente com base na resolução.

Discutimos o uso do objeto window.screen e das propriedades window.innerWidth e window.innerHeight, bem como técnicas para melhorar o desempenho, como throttling, debouncing e atualizações seletivas.

Ao utilizar essas técnicas, você pode criar aplicativos e sites responsivos que oferecem uma experiência de usuário otimizada em diferentes dispositivos e tamanhos de tela.

Está buscando em evoluir como Programador? Confira o nossos cursos clicando aqui.

Nosso principal objetivo é tornar você um dev profissional que é capaz de resolver problemas de alta dificuldade e criar projetos complexos, através de uma metodologia planejada nos mínimos detalhes, após formar muitos outros desenvolvedores.

Cursos com vários projetos, exercícios, material apoio, comunidade de alunos e muito mais!

Subscribe
Notify of
guest

1 Comentário
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Renato

E a implementação dessa função Throttling , como seria?