002. Carrossel de Imagens + Descrição HTML + Flechas + Dots

by francisco_negrao

HTML

<link rel="stylesheet" href="https://componentes.interago.com.br/bootstrap-grid.css">
<link rel="stylesheet" href="https://componentes.interago.com.br/global-css.css">
<section class="carousel sectionBanner iCarouselModel01">
  
<ol class="carouselViewport">
    <li id="carouselSlide1"
        tabindex="0"
        class="carouselSlide active">
        
        <img src="https://cdn.interago.com.br/img/jpg/w_0_q_8/1/mc/001-Componentes - Mídias/svg-icons//banner-ecowebdesign-min" alt="Imagem de fundo Eco Webdesign" />
        <div class="container">
          <div class="boxDsc">
            <h1>
              Aqui na Eco Webdesign você encontra:
            </h1>
            <ul>
              <li>Webdesign Profissional</li>
              <li>Campanhas para Google Ads</li>
              <li>Otimização de SEO</li>
            </ul>
            <p>
             E muito mais!
            </p>
            <div class="dFlex">
            
            <a href="contato" title="Solicitar um Orçamento">Entrar em contato</a> ou <a href="https://web.whatsapp.com/send?phone=5517999999999" target="_blank" title="Clique para falar conosco no WhatsApp" class="whats-link"><i class="fab fa-whatsapp" aria-hidden="true"></i> via WhatsApp</a>
            </div>
          </div>
        </div>
        <div class="carouselSnapper">
      </div>
        <a href="#carouselSlide4"
           class="carouselPrev">Voltar para o item anterior</a>
        <a href="#carouselSlide2"
           class="carouselNext">Ir para o próximo item</a>
    </li>
    <li id="carouselSlide2"
        tabindex="0"
        class="carouselSlide">
        
       <img src="https://cdn.interago.com.br/img/jpg/w_0_q_8/1/mc/001-Componentes - Mídias/svg-icons//banner-ecowebdesign-min" alt="Imagem de fundo Eco Webdesign" />
        <div class="container">
          <div class="boxDsc">
            <h1>
              Aqui na Eco Webdesign você encontra:
            </h1>
            <ul>
              <li>Webdesign...

CSS

body {
  height: 3000px;
  background-color: #000;
  margin: 0px;
  font-family: 'Futura Bk BT';
}

h1,
h2,
h3,
h4,
h5,
h6,
input,
textarea,
label {
  font-family: 'Futura Bk BT';
}

.sectionBanner.iCarouselModel01 {
  height: 800px;
  position: relative;
}

.sectionBanner.iCarouselModel01 ol,
li {
  list-style: none;
  margin: 0;
  padding: 0;
}

.sectionBanner.iCarouselModel01 .carouselViewport {
  position: absolute;
  height: 100%;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  display: flex;
  overflow-x: scroll;
  counter-reset: item;
  scroll-behavior: smooth;
  scroll-snap-type: x mandatory;
}

.sectionBanner.iCarouselModel01 .carouselSlide {
  position: relative;
  flex: 0 0 100%;
  width: 100%;
  counter-increment: item;
}

.sectionBanner.iCarouselModel01 .carouselSnapper {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  scroll-snap-align: center;
}

/* DOTS CSS */

.sectionBanner.iCarouselModel01 .carouselNavigation {
  position: absolute;
  right: 0;
  bottom: 20px;
  left: 0;
  text-align: center;
  z-index: 4;
}

.sectionBanner.iCarouselModel01 .carouselNavigationList,
.sectionBanner.iCarouselModel01 .carouselNavigationItem {
  display: inline-block;
}

.sectionBanner.iCarouselModel01 .carouselNavigationButton {
  display: inline-block;
  width: 12px;
  height: 12px;
  background-color: #fff;
  background-clip: content-box;
  border: 1px solid #888;
  border-radius: 50%;
  font-size: 0;
  transition: transform 0.1s;
}

.sectionBanner.iCarouselModel01 .carouselNavigationButton.active {
  background-color: #999;
}

/* ARROWS CSS */

.sectionBanner.iCarouselModel01 .carouselPrev,
.sectionBanner.iCarouselModel01 .carouselNext {
  position: absolute;
  top: 0;
  bottom: 0;
  margin: auto;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  font-size: 0;
  outline: 0;
  z-index: 5;
}

.sectionBanner.iCarouselModel01.carousel::before,
.sectionBanner.iCarouselModel01 .carouselPrev {
  left:...

JavaScript

/* SCRIPTS CAROUSEL ECO WEBDESIGN */

/* DOTS ACTIVE SCRIPTS */

var carouselDots = document.querySelectorAll('.carouselNavigationButton');

carouselDots.forEach(function(carouselDot) {

  carouselDot.addEventListener('click', function() {
  
  	for (var i = 0, len = carouselDots.length; i < len; i++) {
    carouselDots[i].classList.remove('active');
}
    	this.classList.add('active');
    
    let curItem = this.getAttribute('href'); 
    
  });
})

/* ARROWS ACTIVE SCRIPTS */

var carouselArrows = document.querySelectorAll('.carouselSlide a');

carouselArrows.forEach(function(carouselArrow) {

  carouselArrow.addEventListener('click', function() {
  	
    let curItem = this.getAttribute('href');
    
     for (var i = 0, len = carouselDots.length; i < len; i++) {
     
     if (carouselDots[i].getAttribute('href') == curItem) {
     	carouselDots[i].classList.add('active');
     } else {
     	carouselDots[i].classList.remove('active');
     }
    
}
    
  });
  
});