【JavaScript】背景画像も変化するスライダーの作成方法

JavaScript

JavaScriptで背景画像も変化するスライダーの作成方法を紹介します。

背景画像も変化するスライダーのデモ

See the Pen
JavaScript-背景スライダー
by Sosak (@Sosak2021)
on CodePen.

JavaScriptコードの解説


  const body = document.body;
  const slides = document.querySelectorAll(".slide");
  const leftBtn = document.getElementById("left");
  const rightBtn = document.getElementById("right");
  
  // 初期化
  let activeSlide = 0;
  
  rightBtn.addEventListener("click", () => {
    // 右に進む
    activeSlide++;
  // 最後のスライドに行ったら最初に戻す
    if (activeSlide > slides.length - 1) {
      activeSlide = 0;
    }
  
    setBgToBody();
    setActiveSlide();
  });
  
  leftBtn.addEventListener("click", () => {
    activeSlide--;
  
  //   最初のスライドに行ったら最後に戻す
    if (activeSlide < 0) { activeSlide = slides.length - 1; } setBgToBody(); setActiveSlide(); }); setBgToBody(); // 背景をセットする function setBgToBody() { body.style.backgroundImage = slides[activeSlide].style.backgroundImage; } // アクティブなスライドを決定する function setActiveSlide() { slides.forEach((slide) => slide.classList.remove("is-active"));
  
    slides[activeSlide].classList.add("is-active");
  }
  
  

スライダーは、スライドとなる要素をすべて取得して、
それにindex番号と紐づく変数によって、変化させることができます。
上のようにactiveSlideという変数をスライダーのindexと紐付けるとすると、
activeSlideの値を増やせば次のスライドになり、減らせば前のスライドになります。
スライドの変化はボタンが押されたときに起きるので、ボタンにクリックイベントを付与します。
その中で、まずはactiveSlideの数値を変化させ、その結果によって生じる細かい動きを設定します。
スライド数には限りがあるので、その上限や下限にactiveSlideの値が一致したとき、どうするかを指定します。
また、コンテナー(上の場合はbody要素)の背景画像は、スライドのstyle属性から取得して表示させることができます。スタイルシードをJavaScriptで操作できなくもないですが、大変なので、htmlにstyle属性で背景画像をセットする方が簡単に実装できます。

スライダーを自作したい場合、スライダーの書き方も参考にしてみてください。