2枚の画像スライダーをスムーズにフェードさせる

2枚の画像スライダーをスムーズにフェードさせる

トップページのメインビジュアルに「画像スライダー」を設定している人も多いと思います。カスタマイザから簡単に設定できて便利ですよね。

ただ、ちょっと注意が必要です。

画像スライダー設定で、「スライドの切り替えアニメーション」「フェード」に設定すると、「スライドの表示中アニメーション」の種類にかかわらず、画像が「2枚」の場合に限り、2巡目以降の2枚目に切り替わる時にカクツキが発生し、スムーズにフェードしてくれません。

SWELL開発者の了さんもフォーラムで言及されていましたが、これはスライダー「swiper」の仕様的な既知の問題でニッチな現象です。

今回は、この問題の解決方法と、さらに進んだアニメーションのカスタマイズ方法についてご紹介します。

画僧スライダー設定
目次

カクツキの解消方法

カクツキの状態はこんなカンジ。(例として、ズームインを設定した場合)

これを解消する方法としては、以下の2パターンがあります。

①アニメーション時間を「15秒」に設定

SWELLでは、1スライドあたりのスライドの切り替えアニメーションの時間(animation-duration)がデフォルトで15秒(15s)に設定されています。

.p-mainVisual:not(.-motion-no) .swiper-slide-active .p-mainVisual__imgLayer,
.p-mainVisual:not(.-motion-no) .swiper-slide-duplicate-active .p-mainVisual__imgLayer,
.p-mainVisual:not(.-motion-no) .swiper-slide-prev .p-mainVisual__imgLayer {
  -webkit-animation: var(--mv_slide_animation) 15s linear 0s 1 normal both;
  animation: var(--mv_slide_animation) 15s linear 0s 1 normal both;
}

このデフォルトの15秒に合わせて、スライドの切り替わり速度と間隔の合計を15秒に設定することで、カクツキを解消できます。

animation-durationはそのままで、「animation-fill-mode」をboth以外に変更してもカクツキは解消されません。

例として以下のように設定します。

カスタマイザ>■画像スライダー設定
  • スライドの切り替わり速度: 2000
  • スライドが切り替わる間隔: 13000

これにより、アニメーション全体の時間が15秒となり、カクツキが解消されます。

②CSSで調整

上記①の場合、「15秒は長すぎる」と感じますよね。その場合はCSSで上書きして時間を調整することもできます。

具体的には、SWELLのCSSで設定されている「スライドの切り替えアニメーションの時間(animation-duration)」を短く変更して、①と同様に「スライドの切り替わり速度+スライドが切り替わる間隔」の合計と合わせることで、カクツキを解消できます。

例として、画像スライダー設定で10秒(10s)に変更する場合、以下のCSSを追加します。

追加する場所は、「カスタマイザ>追加CSS」または、トップページを固定ページで作成している場合は「固定ページ>カスタムCSS&JS」に追加

.p-mainVisual:not(.-motion-no) .swiper-slide-active .p-mainVisual__imgLayer,
.p-mainVisual:not(.-motion-no) .swiper-slide-duplicate-active .p-mainVisual__imgLayer,
.p-mainVisual:not(.-motion-no) .swiper-slide-prev .p-mainVisual__imgLayer {
  -webkit-animation: var(--mv_slide_animation) 10s linear 0s 1 normal both;
  animation: var(--mv_slide_animation) 10s linear 0s 1 normal both;
}

そして、カスタマイザで合計が10秒になるように設定します。

カスタマイザ>■画像スライダー設定
  • スライドの切り替わり速度: 2000
  • スライドが切り替わる間隔: 8000

これにより、アニメーション全体の時間が10秒となり、カクツキが解消されます。

アニメーションのカスタマイズ

SWELLの画像スライダーでは、「スライド表示中のアニメーション」を以下の3タイプからえらべます。

スライド表示中のアニメーション
  • なし
  • ズームイン
  • 左から右へ

このアニメーションタイプも、オリジナルのアニメーションにカスタマイズできます。

スライド表示中アニメーションのカスタマイズ

SWELLで設定されているアニメーションタイプ2つのCSSは以下のようになっています。(抜粋)

ズームイン
/* スライドの表示中アニメーション:ズームイン */
:root {
  --mv_slide_animation: zoomUp;
}

@keyframes zoomUp {
  0% {
    -webkit-transform: scale(1);
    transform: scale(1);
  }
  to {
    -webkit-transform: scale(1.1);
    transform: scale(1.1);
  }
}
左から右へ
/* スライドの表示中アニメーション:左から右へ */
:root {
  --mv_slide_animation: leftToRight;
}

@keyframes leftToRight {
  0% {
    -webkit-transform: scale(1.1) translateX(-1%);
    transform: scale(1.1) translateX(-1%);
  }
  to {
    -webkit-transform: scale(1.1) translateX(1%);
    transform: scale(1.1) translateX(1%);
  }
}
※モバイルは省略

SWELLデフォルトのCSSで定義されていたカスタムプロパティvar(--mv_slide_animation)を、独自のkeyframesアニメーションに変更することで、スライド表示中のアニメーションをカスタマイズできます。

例えば、ズームにグレーからカラーに変化する効果を追加したり、上から下へ変更する場合は以下のようになります。

ズームインにグレースケール効果を追加
/* 例:ズームインにグレースケール効果を追加 */
:root {
  --mv_slide_animation: zoomUpGlay;
}

@keyframes zoomUpGlay {
  0% {
    -webkit-transform: scale(1);
    transform: scale(1);
    filter: grayscale(1);  /* グレーから */
  }
  to {
    -webkit-transform: scale(1.1);
    transform: scale(1.1);
    filter: grayscale(0);  /* カラーへ */
  }
}
上から下へ
/* 例:上から下へ */
:root {
  --mv_slide_animation: topToBottom;
}

@keyframes topToBottom {
  0% {
    -webkit-transform: scale(1.1) translateY(-2%);
    transform: scale(1.1) translateY(-2%);  /* 上から */
  }
  to {
    -webkit-transform: scale(1.1) translateY(2%);
    transform: scale(1.1) translateY(2%);  /* 下へ */
  }
}

※モバイルは省略

まとめ

SWELLのスライダーアニメーションのカスタマイズでは

  1. 画像が2枚の場合は「スライドの切り替わり速度+スライドが切り替わる間隔」の合計を適切に設定すること
  2. CSSで独自のkeyframesアニメーションも設定できる

上記を参考に、メインビジュアルのアニメーションを、サイトの雰囲気に合わせてカスタマイズしてみてください。

ではでは。

サポートフォーム

このカスタマイズに関するお問い合わせや、
その他リクエストなど、お気軽にどうぞ。

5
4
3
2
1
個人情報の取り扱いについて

POINT-OF-VIEW.BLOG(以下「当サイト」)では、以下のとおり個人情報保護方針を定め、個人情報の保護を推進致します。

# 個人情報の利用目的

当サイトでは、お問い合わせの際、名前やメールアドレス等の個人情報を入力いただきます。取得した個人情報は、お問い合わせに対する回答や必要な情報を電子メールなどでご連絡する場合に利用させていただくものであり、これらの目的以外では利用いたしません。

# 広告について

当サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net等のアフィリエイトサービス)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。
クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。

Cookieを無効にする方法やGoogleアドセンスに関する詳細は「広告 ポリシーと規約 Google」をご確認ください。

# アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。このGoogleアナリティクスはトラフィックデータの収集のためにクッキー(Cookie)を使用しております。トラフィックデータは匿名で収集されており、個人を特定するものではありません。

くれぐれもカスタマイズは
「自己責任」でお願いします^^;

当ブログでご紹介しているようなカスタマイズ(←本来の意味での)をしなくても、SWELLの基本機能だけで十分オシャレなブログ・サイトが構築できます。

テーマ選びに迷ったらSWELLを選んでおけば間違いないです!
(カスタマイズ沼にハマらないようご注意ください^^;)

\ ご支援ありがとうございます! /

SWELLを使用したブログの構築・カスタマイズのご相談承ります

本業の傍ら、SWELLを使用したブログの構築およびカスタマイズを承っております。
「おしゃれなブログにしたい」
「独自のカスタマイズをしたい」など、
お気軽にご相談ください。
詳しくは、のDMからどうぞ。
まずはで仲良くしてください ^^

WordPressテーマ「SWELL」

17,600円(税込)

シンプル美と機能性の両立。圧倒的な使い心地を追求するWordPressテーマ。
ブロックエディター完全対応!

目次