Criando uma galeria de imagens dinâmica com JavaScript

Entenda como criar uma galeria de imagens interativa e dinâmica com JavaScript, permitindo exibir, filtrar e organizar as imagens de maneira eficiente.

Como criar uma galeria de imagens dinâmica?

Uma galeria de imagens dinâmica é uma maneira popular de exibir conteúdo visual em páginas web. Com JavaScript, você pode criar galeria de imagens que permite ao usuário interagir com as imagens de diversas maneiras, como clicando, filtrando ou visualizando as imagens em uma lightbox. Vamos ver como construir uma galeria simples e interativa sem usar bibliotecas externas.

Estrutura básica de uma galeria de imagens

Primeiro, você precisa criar a estrutura HTML básica para a galeria. A estrutura de uma galeria pode ser uma lista de imagens dentro de um contêiner.

Exemplo de HTML para a galeria:

<div id="galeria">
  <img src="imagem1.jpg" alt="Imagem 1" class="imagem">
  <img src="imagem2.jpg" alt="Imagem 2" class="imagem">
  <img src="imagem3.jpg" alt="Imagem 3" class="imagem">
  <!-- Mais imagens aqui -->
</div>

Neste exemplo, temos um contêiner div com o id="galeria", e dentro dele, várias imagens com a classe imagem. Agora, vamos adicionar algum estilo básico e interatividade usando JavaScript.

Estilos básicos para a galeria de imagens

Usando CSS, você pode adicionar alguns estilos para organizar as imagens em uma grade e garantir que elas sejam exibidas corretamente.

Exemplo de CSS para a galeria:

#galeria {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.imagem {
  width: 100px;
  height: 100px;
  object-fit: cover;
  cursor: pointer;
}

Aqui, estamos utilizando o layout flexbox para organizar as imagens em uma grade. O gap: 10px; garante que haja espaço entre as imagens. O object-fit: cover; ajuda a manter a proporção das imagens enquanto as redimensiona.

Exibindo a imagem em tamanho maior (lightbox)

Para criar uma galeria interativa, podemos adicionar um efeito de lightbox, que permite ao usuário visualizar as imagens em tamanho maior quando clicar sobre elas.

Exemplo de código JavaScript para a funcionalidade de lightbox:

let imagens = document.querySelectorAll('.imagem');

imagens.forEach(function(imagem) {
  imagem.addEventListener('click', function() {
    let modal = document.createElement('div');
    modal.classList.add('modal');

    let img = document.createElement('img');
    img.src = imagem.src;
    modal.appendChild(img);

    let fechar = document.createElement('span');
    fechar.textContent = '×';
    fechar.classList.add('fechar');
    modal.appendChild(fechar);

    document.body.appendChild(modal);

    fechar.addEventListener('click', function() {
      modal.remove();
    });
  });
});

Neste exemplo, sempre que o usuário clicar em uma imagem da galeria, será criado um modal (lightbox) exibindo a imagem em tamanho maior. O modal também tem um botão de fechar para removê-lo da página.

Características dessa animação

  • Exibição em tela cheia: A imagem é exibida em um modal, aproveitando o espaço da tela.
  • Interação simples: O usuário pode clicar na imagem e visualizá-la em um tamanho maior, melhorando a interação com o conteúdo.

Estilos CSS para o modal (lightbox)

Agora, vamos adicionar alguns estilos para o modal, para garantir que ele seja exibido corretamente em cima da página e tenha uma aparência agradável.

Exemplo de CSS para o modal:

.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.7);
  display: flex;
  justify-content: center;
  align-items: center;
}

.modal img {
  max-width: 90%;
  max-height: 80%;
}

.fechar {
  position: absolute;
  top: 10px;
  right: 10px;
  font-size: 30px;
  color: white;
  cursor: pointer;
}

Aqui, a classe .modal é configurada para ocupar toda a tela e centralizar a imagem. O botão de fechar é posicionado no canto superior direito da tela.

Adicionando filtros à galeria de imagens

Agora, podemos adicionar funcionalidade para filtrar as imagens com base em categorias, como por exemplo, categorias de tipo de imagem (paisagens, retratos, etc.). Para isso, podemos criar botões de filtro e adicionar um evento de clique para filtrar as imagens exibidas.

Exemplo de código para filtro de imagens:

let filtro = document.getElementById('filtro');

filtro.addEventListener('change', function(event) {
  let categoria = event.target.value;
  imagens.forEach(function(imagem) {
    if (imagem.classList.contains(categoria)) {
      imagem.style.display = 'block';
    } else {
      imagem.style.display = 'none';
    }
  });
});

Neste exemplo, o valor selecionado no filtro determina quais imagens serão exibidas. As imagens que não pertencem à categoria selecionada são ocultadas.

Conclusão

Criar uma galeria de imagens dinâmica com JavaScript oferece muitas vantagens, como interatividade e personalização, sem depender de bibliotecas externas. Você pode usar JavaScript para exibir imagens em um modal (lightbox), permitir filtragem de imagens e adicionar animações, criando uma experiência de usuário mais envolvente. Com as técnicas mostradas neste tutorial, você pode criar uma galeria de imagens simples e eficaz para suas páginas web.

A criação de uma galeria de imagens dinâmica é uma das maneiras mais eficazes de tornar sua página web interativa. Com JavaScript puro, você pode adicionar funcionalidades como visualização de imagens em tamanho maior (lightbox), filtragem por categorias e transições suaves, sem a necessidade de bibliotecas externas. Isso melhora a experiência do usuário e torna a navegação mais fluida e agradável.

Algumas aplicações:

  • Exibir galerias de imagens com filtros dinâmicos para facilitar a navegação.
  • Criar modais (lightboxes) para visualização de imagens em tamanho maior.
  • Usar JavaScript para personalizar o comportamento da galeria, como animações e transições.
  • Adicionar interatividade à galeria, como permitir que o usuário arraste ou altere o layout.

Dicas para quem está começando

  • Comece criando a estrutura HTML da galeria e adicione imagens com diferentes dimensões.
  • Teste os efeitos de visualização de imagens em tamanho maior (lightbox) e explore diferentes animações para melhorar a experiência.
  • Experimente adicionar filtros e veja como você pode categorizar as imagens de maneira eficiente.
  • Evite sobrecarregar a página com imagens grandes, comprimindo ou redimensionando as imagens para garantir carregamento rápido.

Contribuições de Renato Marques

Compartilhe este tutorial: Como criar uma galeria de imagens dinâmica?

Compartilhe este tutorial

Continue aprendendo:

Como fazer um modal em JavaScript sem bibliotecas?

Entenda como criar um modal em JavaScript, sem a necessidade de bibliotecas externas, para exibir conteúdo de maneira interativa e dinâmica.

Tutorial anterior

Como fazer um contador de caracteres em um campo de texto?

Descubra como implementar um contador de caracteres em campos de texto usando JavaScript para monitorar o número de caracteres digitados e alertar o usuário.

Próximo tutorial