hiroiwkm
@hiroiwkm

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

スライダーのアニメーションの付け方がわからない

解決したいこと

作りたいイメージ
スクリーンショット 2023-04-20 16.08.40.png

左側のタブをクリックするとそれに応じてコンテンツがスライドで表示される
コンテンツ下部に次へ、前へのボタンがあり、それを押すことでもコンテンツがスライドで切り替わる。

発生している問題・エラー

スライドイン・アウトで切り替わるアニメーションの付け方がわからないのでおしえていただきたいです。

作成したJS


const sliders = document.querySelectorAll(".slider-container");

sliders.forEach(slider => {
  const tabs = slider.querySelectorAll(".slider-tab");
  const contents = slider.querySelectorAll(".slider-slide");
  const prev = slider.querySelector(".prev");
  const next = slider.querySelector(".next");
  let slideIndex = 1;

  showSlides(slideIndex);

  prev.addEventListener("click", function() {
    plusSlides(-1);
  });

  next.addEventListener("click", function() {
    plusSlides(1);
  });

  tabs.forEach((tab, index) => {
    tab.addEventListener("click", function() {
      event.preventDefault();
      currentSlide(index + 1);
    });
  });

  function plusSlides(n) {
    showSlides(slideIndex += n);
  }

  function currentSlide(n) {
    showSlides(slideIndex = n);
  }

  function showSlides(n) {
    let i;
    if (n > contents.length) {
      slideIndex = 1;
    }
    if (n < 1) {
      slideIndex = contents.length;
    }
    for (i = 0; i < contents.length; i++) {
      contents[i].style.display = "none";
    }
    for (i = 0; i < tabs.length; i++) {
      tabs[i].classList.remove("active");
    }
    contents[slideIndex - 1].style.display = "block";
    tabs[slideIndex - 1].classList.add("active");
  }
});

自分で試したこと

Slickでも試したのですが、スタイル調整ができずギブアップでした。

0

2Answer

Swiper.jsなどのライブラリを使うのが楽でよいと思います.特にこれはscriptタグで読み込むだけで使えるのですぐに動作させられます.
1から手作業で実装すると結構苦労します.

2Like

Comments

  1. @hiroiwkm

    Questioner

    ご回答ありがとうございます。
    やはり生のJSを書くのは無謀ですよね、、。

    今回実装したい内容だと、Thumsを使って
    左側にあるものをサムネイルとし、右側をメインのスライダーとするやり方が
    一般的でしょうか?

    他にもっといいやり方があれば教えていただければと思います。
    ページネーションをうまくカスタマイズしたら実現可能なんでしょうかね、、、??

  2. それっぽいサンプルも公式にありましたのでよければどうぞ.

Your answer might help someone💌