時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【解決】Swiperで高さバラバラのスライドを調整【揃える/中央配置】

記事内に広告を含みます

パソ君
パソ君

・Swiperで高さバラバラのスライドを揃えたいけどできる?

こんな疑問にお答えします。

Swiperでスライダーを作るとき、スライド要素の高さが一定とは限りません。

バラバラの高さの場合もあります。

その場合、下記みたいになっちゃうんですよね↓

See the Pen swiper 高さバラバラ⓪b by jito-coder (@jito-coder) on CodePen.

See the Pen swiper 高さバラバラ⓪ by jito-coder (@jito-coder) on CodePen.

矢印の位置は、一番大きいスライド要素の中央になっています。

これを自動で高さに合わせて揃えたり、それぞれのスライドに対して中央配置させたいですよね。

実はそれ対応可能です!

ジト
ジト

すぐにできるよ!

ということで、この記事では「Swiperで高さバラバラのスライドを調整」について解説していきます!

swiper自体の作り方については下記記事を参考に↓

【簡単】Swiperの使い方|初心者向けに解説【オプション】
この記事でわかること

・Swiperで高さバラバラのスライドを調整
・Swiperで高さバラバラのスライドを揃える
・Swiperで高さバラバラのスライドを中央配置

【解決法➀】Swiperで高さバラバラのスライド【自動で調整】

まずそれぞれのスライド要素に合わせて、高さを自動調整する方法を紹介します。

それがこちら↓

See the Pen swiper 高さバラバラ➀ by jito-coder (@jito-coder) on CodePen.

矢印とドットの位置が、スライドそれぞれの高さに応じて調整されていますよね。

「autoHeight」を「true」にする

といってもやり方は簡単です。

JavaScriptコードにて、「autoHeight」オプションを「true」にすればよいだけ。

下記コードですね。

autoHeight: true,

これをSwiper用のコードに追加すればOKです。

window.onload = function() {
    const swiper = new Swiper(".swiper", {
        autoHeight: true,
        spaceBetween: 20,
        slidesPerView: 1,
        loop: true,
        speed: 2000,
        autoplay: {
            delay: 2000,
            disableOnInteraction: false,
        },
        pagination: {
            el: ".swiper-pagination",
            clickable: true,
        },
        navigation: {
            nextEl: ".swiper-button-next",
            prevEl: ".swiper-button-prev",
        },
    });
}

これで自動で高さを揃えるスライダーが完成しました!

【解決法➁】Swiperで高さバラバラのスライド【揃える】

2つ目の解決方法が、スライドの高さをそれぞれ揃える方法ですね。

それがこちら↓

See the Pen swiper 高さバラバラ➁ by jito-coder (@jito-coder) on CodePen.

スライドの高さが揃い、下部分まで背景色が行き届いております。

「height」を調整

やり方は「height」を調整するだけです。

<div class="swiper">
    <div class="swiper-wrapper">
        <!-- 1つ目のスライド -->
        <div class="swiper-slide swiper-slide01">
            <div class="swiper-slide__box">
                <p class="text">ここにコンテンツが入ります。</p>
            </div>
        </div>
        <!-- 2つ目のスライド -->
        <div class="swiper-slide swiper-slide02">
            <div class="swiper-slide__box">
                <p class="text">ここにコンテンツが入ります。</p>
                <p class="text">ここにコンテンツが入ります。</p>
                <p class="text">ここにコンテンツが入ります。</p>
                <p class="text">ここにコンテンツが入ります。</p>
                <p class="text">ここにコンテンツが入ります。</p>
                <p class="text">ここにコンテンツが入ります。</p>
            </div>
        </div>
        <!-- 省略 -->
    </div>
</div>
.swiper-slide {
    height: auto;
}

.swiper-slide__box {
    height: 100%;
}

「.swiper-slide」タグに対して、「height: auto」を指定。

そしてその中にあるタグに対して「height: 100%」を指定すれば完成です。

【解決法➂】Swiperで高さバラバラのスライド【中央配置】

最後にスライドそれぞれを中央配置させる方法を紹介します。

それがこちら↓

See the Pen swiper 高さバラバラ➂ by jito-coder (@jito-coder) on CodePen.

スライド要素それぞれが上下左右中央配置されていますよね。

矢印の位置的にも中央になっております。

<div class="swiper">
    <div class="swiper-wrapper">
        <div class="swiper-slide swiper-slide01">
            <img src="https://jito-site.com/wp-content/uploads/2023/01/1.png" alt="">
        </div>
        <div class="swiper-slide swiper-slide02">
            <img src="https://jito-site.com/wp-content/uploads/2023/12/swiper-height02.png" alt="">
        </div>
        <div class="swiper-slide swiper-slide03">
            <img src="https://jito-site.com/wp-content/uploads/2023/12/syokuji_computer.png" alt="">
        </div>
        <div class="swiper-slide swiper-slide04">
            <img src="https://jito-site.com/wp-content/uploads/2023/12/swiper-height01.jpg" alt="">
        </div>
    </div>
    <div class="swiper-pagination"></div>
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
</div>
.swiper {
  height: 500px;
  width: min(100%, 500px);
  margin-inline: auto;
}
@media screen and (max-width: 768px) {
  .swiper {
    height: 300px;
  }
}

.swiper-slide {
  display: flex;
  justify-content: center;
  align-items: center;
}

.swiper-slide img {
  width: auto;
  max-width: 100%;
  max-height: 100%;
}

コードの中で重要な点がこちら↓

  • スライド親要素の高さを指定
  • スライド要素に対して中央配置に指定
  • スライド要素の中に対して高さと横幅を指定

順に解説してきます。

➀:スライド親要素の高さを指定

まずスライダーの高さを指定します。

今回は例として500pxに設定。768px以下は300pxになるようにしております。

.swiper {
  height: 500px;
  width: min(100%, 500px);
  margin-inline: auto;
}
@media screen and (max-width: 768px) {
  .swiper {
    height: 300px;
  }
}

ようはこの高さの中で、スライドを中央配置させるということ。

➁:スライド要素に対して中央配置に指定

続いてスライド要素を中央配置させるために、下記コードを記述します↓

.swiper-slide {
  display: flex;
  justify-content: center;
  align-items: center;
}

これで中央配置させることができました。

ただしこのままでは、親要素の高さより大きい画像が途切れてしまいます。

そのため子要素の高さと横幅を指定する必要があります。

➂:スライド要素の中に対して高さと横幅を指定

途切れないようの対策として、高さと横幅を指定↓

.swiper-slide img {
  width: auto;
  max-width: 100%;
  max-height: 100%;
}

これでバラバラのスライドを中央配置させる実装の完成です!

【解決】Swiperで高さバラバラのスライドを調整【揃える/中央配置】:まとめ

  • 対策➀:「autoHeight」を「true」にする
  • 対策➁:「height」を調整する
  • 対策➂:中央配置させる
ジト
ジト

Swiperで高さバラバラのスライドを調整する時はためしてみてね!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA