ふわっと表示させるスライドショー的なものを作る


ふわっと表示させるスライドショー的なものを作る

今回は3つのコンテンツを一定の時間ごとに表示していくスライドショーを作りたいと思います。

コード

html

  <div class="slide" data-slide="">
    <div data-slide-item="" class="slide__item slide__item--first">1</div>
    <div data-slide-item="" class="slide__item slide__item--secound">2</div>
    <div data-slide-item="" class="slide__item slide__item--third">3</div>
  </div>

scss

.slide {
  position: relative;

  &__item {
    width: 100%;
    height: 50px;

    &--first {
      position: absolute;
      top: 0;
      left: 0;
      background: #ff0000;
    }
    &--secound {
      position: absolute;
      top: 0;
      left: 0;
      opacity: 0;
      background: #ff00ff;
    }
    &--third {
      position: absolute;
      top: 0;
      left: 0;
      opacity: 0;
      background: #00ff00;
    }
  }
}

@keyframes opacity-start {
    0% {
        opacity: 1;
    }
    100% {
        opacity: 0;
    }
}

@keyframes opacity-end {
    0% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}

javascript

const slide = document.querySelector('[data-slide]');
const slideItem = document.querySelectorAll('[data-slide-item]');
let current = 0;


const slideImage = function(){
  slideItem[current].style.animation = "opacity-start 2s linear";
  slideItem[current].style.opacity = "0";

  if (current < 2) {
    current += 1;
  } else {
    current = 0;
  }

  slideItem[current].style.animation = "opacity-end 2s linear";
  slideItem[current].style.opacity = "1";
}
setInterval(slideImage, 5000);