Crie Sliders de Imagens Incríveis com HTML, CSS e JavaScript!

Aprimore suas Páginas Web com Sliders de Imagens Dinâmicos

Alguma vez desejou exibir múltiplas imagens ou vídeos em uma seção da sua página web sem sobrecarregar o espaço? Ou talvez procurasse adicionar interatividade e tornar suas páginas mais atraentes?

A solução pode estar em um slider de imagens. Neste artigo, vamos explorar o que é um slider de imagens, os requisitos para criar um e como construir um usando HTML, JavaScript e CSS.

O que é um Slider de Imagens?

Sliders, também conhecidos como carrosséis ou apresentações de slides, exibem textos, imagens ou vídeos. Aqui, o foco será nos sliders de imagens. Muitos desenvolvedores web utilizam sliders na página inicial para destacar ofertas ou informações relevantes.

Confira algumas razões para implementar sliders em suas páginas web:

  • Melhorar a Experiência do Usuário: Uma página web eficiente deve ser concisa, evitando que o usuário precise rolar excessivamente para encontrar informações importantes. Um slider organiza as imagens, economizando tempo e esforço do usuário.
  • Apelo Visual: Páginas simples tendem a não reter a atenção dos visitantes por muito tempo. Sliders, com suas animações, podem revitalizar o apelo visual da sua página.
  • Economia de Espaço: Exibir vinte imagens diretamente na página pode consumir muito espaço. Um slider permite mostrar todas as imagens sem comprometer a apresentação.
  • Exibição de Conteúdo Dinâmico: Sliders podem ser usados para exibir conteúdo dinâmico, como posts de redes sociais, blogs e notícias.

Requisitos para Criar um Slider de Imagens

  • Conhecimento Básico de HTML: Iremos construir a estrutura do slider. Familiaridade com tags HTML, classes e divs é fundamental.
  • Conhecimento Básico de CSS: Usaremos CSS para estilizar o slider e os botões.
  • Conhecimento Básico de JavaScript: JavaScript será usado para tornar o slider interativo.
  • Editor de Código: Pode usar o editor de código de sua preferência, como o Visual Studio Code.
  • Coleção de Imagens: Você vai precisar de algumas imagens para o seu slider.

Organizando a Pasta do Projeto

Você precisará de uma pasta principal para o projeto, uma subpasta para as imagens e arquivos HTML, CSS e JavaScript. Sugerimos nomear a pasta principal como “Slider-de-Imagens”. Pode criar manualmente ou usar estes comandos:

mkdir Slider-de-Imagens

cd Slider-de-Imagens

mkdir imagens && touch index.html estilos.css script.js

Adicione suas imagens na subpasta “imagens”.

Este é um exemplo de como a estrutura de pastas pode estar. O arquivo index.html abrigará todo o código HTML.

Tipos de Sliders de Imagens

Existem dois tipos principais de sliders de imagem: o automático e o automático com botões.

#1. Slider de Imagens Automático

Um slider automático transiciona para a próxima imagem após um intervalo definido, por exemplo, a cada três segundos.

Código HTML

Este é um exemplo de código HTML:

    <div id="slider">
      <div class="slide">
        <h1>Paisagem</h1>
        <img src="imagens/img1.jpg" >
      </div>
      <div class="slide">
        <h1>Cidade</h1>
        <img src="imagens/img2.jpg" >
      </div>
      <div class="slide">
        <h1>Montanha</h1>
        <img src="imagens/img3.jpg" >
      </div>
      <div class="slide">
        <h1>Praia</h1>
        <img src="imagens/img4.jpg" >
      </div>
     <div class="slide">
        <h1>Floresta </h1>
        <img src="imagens/img5.jpg" >
      </div>
      <div class="slide">
        <h1>Deserto </h1>
        <img src="imagens/img6.jpg" >
      </div>
    </div>
  
    <script src="script.js"></script>
  

Observações importantes:

  • O arquivo CSS está vinculado ao index.html dentro da tag <head>.
  • O JavaScript está incluído antes da tag de fechamento <body> para adicionar funcionalidade.
  • Cada imagem está envolvida por um <div> com a classe “slide”.
  • A tag <img src> é usada para referenciar as imagens na pasta “imagens”.

Estilizando o Slider Automático com CSS

Agora que os arquivos HTML e CSS estão vinculados, vamos estilizar as imagens. Insira este código no seu arquivo CSS:

  #slider {
      width: 80%;
    }
    
    .slide {
      width: 80%;
      display: none;
      position: relative;
    }
    
    .slide img {
      width: 80%;
      height: 80%;
    }
    
    .slide.active {
      display: block;
    }
  

Observações:

  • Definimos a largura do slider em 80%.
  • A classe “active” é usada para exibir apenas o slide ativo, enquanto os outros ficam ocultos.

Adicionando Interatividade com JavaScript

Insira este código no seu arquivo script.js:

  var slides = document.querySelectorAll('.slide');
  var currentSlide = 0;
  var slideInterval = setInterval(nextSlide,2000);
  
  function nextSlide() {
    slides[currentSlide].className="slide";
    currentSlide = (currentSlide+1)%slides.length;
    slides[currentSlide].className="slide active";
  }
  

Este código JavaScript:

  • Usa document.querySelectorAll para selecionar todos os elementos com a classe “slide”.
  • Inicia o currentSlide com o valor 0.
  • Define o slideInterval em 2000 milissegundos (2 segundos), para que as imagens mudem a cada 2 segundos.
  • A função nextSlide remove a classe “active” do slide atual e adiciona ao próximo.

#2. Slider Automático com Botões

O slider anterior faz transições automaticamente. Agora, vamos criar um slider onde o usuário pode navegar pelos slides clicando em botões, e que também terá uma transição automática a cada 3 segundos.

Código HTML

Modifique o conteúdo do arquivo index.html da seguinte forma:

      <div class="container">
          <div class="mySlides">
              <img src="imagens/img1.jpg" style="width:100% ; height:50vh" >
          </div>
          <div class="mySlides">
              <img src="imagens/img2.jpg" style="width:100% ; height:50vh">
          </div>
          <div class="mySlides">
              <img src="imagens/img3.jpg" style="width:100% ; height:50vh">
          </div>
          <div class="mySlides">
              <img src="imagens/img4.jpg" style="width:100% ; height:50vh">
          </div>
          <div class="mySlides">
              <img src="imagens/img5.jpg" style="width:100% ; height:50vh">
          </div>

          <a class="prev" onclick="plusSlides(-1)">❮</a>
          <a class="next" onclick="plusSlides(1)">❯</a>

          <div class="caption-container">
            <p id="caption"></p>
          </div>

          <div class="row">
            <div class="column">
              <img class="demo cursor" src="imagens/img1.jpg" style="width:100%" onclick="currentSlide(1)" >
            </div>
            <div class="column">
              <img class="demo cursor" src="imagens/img2.jpg" style="width:100%" onclick="currentSlide(2)" >
            </div>
            <div class="column">
              <img class="demo cursor" src="imagens/img3.jpg" style="width:100%" onclick="currentSlide(3)" >
            </div>
            <div class="column">
              <img class="demo cursor" src="imagens/img4.jpg" style="width:100%" onclick="currentSlide(4)" >
            </div>
            <div class="column">
              <img class="demo cursor" src="imagens/img5.jpg" style="width:100%" onclick="currentSlide(5)" >
            </div>
          </div>
      </div>
      <script src="script.js"></script>
  

Nesse código:

  • A classe “mySlides” abriga as cinco imagens.
  • Os botões “anterior” e “próximo” com o atributo onclick permitem ao usuário navegar pelos slides.
  • Miniaturas são exibidas na parte inferior da página.

Código CSS

Adicione o seguinte código no seu arquivo CSS:

    * {
      box-sizing: border-box;
    }

    .container {
      position: relative;
    }

    .mySlides {
      justify-content: center;
    }
  
    .cursor {
      cursor: pointer;
    }
  
    .prev,
    .next {
      cursor: pointer;
      position: absolute;
      top: 40%;
      width: auto;
      padding: 16px;
      margin-top: -50px;
      color: rgb(34, 143, 85);
      font-weight: bold;
      font-size: 20px;
      border-radius: 0 3px 3px 0;
      user-select: none;
      -webkit-user-select: none;
    }
  
    .next {
      right: 0;
      border-radius: 3px 0 0 3px;
    }
  
    .prev:hover,
    .next:hover {
      background-color: rgba(0, 0, 0, 0.8);
    }
  
    .caption-container {
      text-align: center;
      background-color: orangered;
      padding: 2px 16px;
      color: white;
    }
  
    .row:after {
      content: "";
      display: table;
      clear: both;
    }
  
    .column {
      float: left;
      width: 16.66%;
    }
  
    .demo {
      opacity: 0.6;
    }
    .active,
    .demo:hover {
      opacity: 1;
    }
  

Observações sobre o CSS:

  • A propriedade display da classe “.mySlides” é definida como “none” para ocultar todos os slides por padrão.
  • A opacidade das miniaturas ao passar o mouse é definida como 1 através da regra .demo:hover {opacity: 1;}.

Código JavaScript

      let slideIndex = 1;
      showSlides(slideIndex);
  
      function plusSlides(n) {
        showSlides(slideIndex += n);
      }
  
      function currentSlide(n) {
        showSlides(slideIndex = n);
      }
  
      let slideInterval = setInterval(() => {
        plusSlides(1);
      }, 3000);
  
      let slideshowContainer = document.getElementsByClassName('slideshow-container')[0];
      slideshowContainer.addEventListener('mouseenter', () => {
        clearInterval(slideInterval);
      });
  
      slideshowContainer.addEventListener('mouseleave', () => {
        slideInterval = setInterval(() => {
          plusSlides(1);
        }, 3000);
      });
  
      function showSlides(n) {
        let i;
        let slides = document.getElementsByClassName("mySlides");
        let dots = document.getElementsByClassName("demo");
        let captionText = document.getElementById("caption");
        if (n > slides.length) {slideIndex = 1}
        if (n < 1) {slideIndex = slides.length}
        for (i = 0; i < slides.length; i++) {
          slides[i].style.display = "none";
        }
        for (i = 0; i < dots.length; i++) {
          dots[i].className = dots[i].className.replace(" active", "");
        }
        slides[slideIndex-1].style.display = "block";
        dots[slideIndex-1].className += " active";
        captionText.innerHTML = dots[slideIndex-1].alt;
      }
  

Este código JavaScript:

  • A função currentSlide define o valor de exibição como nenhum. Isso permite que a página mostre apenas o slide atual.
  • A função plusSlides adiciona/subtrai o valor fornecido de slideIndex para determinar qual slide exibir.
  • Se o usuário não clicar nos botões, os slides rolarão automaticamente a cada 3 segundos.

Testando e Depurando o Slider de Imagens

Erros são comuns no desenvolvimento. Se o seu código não estiver funcionando, experimente as seguintes opções para depuração:

  • Depure cada arquivo separadamente: Verifique se seus arquivos HTML, CSS e JavaScript estão válidos usando ferramentas como o W3C Markup Validation Service para HTML, CSS Validator para CSS e o Chrome DevTools para JavaScript.
  • Realize diferentes tipos de teste: Faça testes visuais, de desempenho e funcionais.
  • Teste com diferentes formatos e tamanhos de imagem: Um bom slider deve funcionar com diferentes formatos e tamanhos de imagem.
  • Automatize os testes: Use ferramentas como Selenium ou LoadRunner para automatizar testes.
  • Documente os testes: Mantenha um registro do processo de teste para facilitar a manutenção do código.

Práticas Recomendadas para Sliders de Imagens

  • Mantenha a simplicidade: Evite sobrecarregar o slider com muitas imagens. 4-7 imagens por slider é o ideal.
  • Teste: Verifique a funcionalidade antes de publicar o site.
  • Sliders responsivos: Certifique-se de que os sliders se adaptem a diferentes tamanhos de tela.
  • Use imagens de alta qualidade: Imagens com qualidade superior tornam o slider mais atraente. Salvar suas imagens em formato SVG pode ser uma boa abordagem para evitar a perda de qualidade quando redimensionadas.
  • Redimensione as imagens: Certifique-se de que todas as imagens em um slider sejam do mesmo tamanho. O CSS pode ajudar com isso.

Conclusão

Com este guia, esperamos que você possa criar um slider de imagens funcional para exibir informações importantes no seu site sem a necessidade de frameworks. Você pode aplicar essas técnicas para construir sliders de vídeo também.