コピペで簡単!無限ループアニメーション

コピペで簡単!無限ループアニメーション

こんなSWELLユーザーに読んでほしい!

  • ガジェットブログなどで提供元のバナー一覧を表示したい
  • ポートフォリオの作品の見せ方にこだわりたい
  • 記事スライダーを簡単に設置したい
目次

無限ループアニメーションとは

無限ループアニメーションとは、指定した動きを途切れることなく繰り返すアニメーション手法です。

当記事でいう「無限ループアニメーション」とは、複数のバナーが画面を横断するアニメーションや、SWELLの「お知らせバー」のようなニュースティッカーのことを指します。

これを、SWELL標準ブロックを用いて、CSSをコピペするだけで実装する方法をご紹介します。

まずは実装サンプルをご覧ください。

このような無限ループアニメーションが、SWELL標準ブロックの簡単な設定とCSSのコピペで実装できます。

CSSでの実装要件としては、

  • @keyframesanimationプロパティを使用
  • 「要素の複製方式」によるシームレスな繰り返し表示
  • アニメーションはマウスオーバーで一時停止
  • スマホの場合はアニメーションではなく「スクロールスナップ」で表示

で実装します。

「要素の複製方式」とは、表示したいブロックを2セット用意し、1セット目が画面外に出たところで2セット目が表示される仕組みです。作業としては「ブロックを複製」するだけです。

スマホでは無限ループアニメーションが冗長すぎる感もあるので、スマホの場合はアニメーションではなくフリックで動作する「スクロールスナップ」に切り替える仕様にしています。

なお、同じDOM構成をもつSWELL標準ブロックであれば、この無限ループアニメーションを適用することができます。

今回は、

  • リッチカラム
  • 投稿リスト
  • ボックスメニュー

を無限ループアニメーション化する方法をご紹介します。

無限ループアニメーションのカスタマイズ手順

リッチカラムブロックの場合

前提条件

アニメーションを表示させる領域は「フルワイド」ブロックフルワイドにします。

アイテムの幅は画面幅/アイテム数になります。 ※スマホの場合はサイズ固定(1アイテムを表示)

以上を念頭に、「リッチカラム」ブロックを例にして具体的に解説していきます。

「リッチカラム」ブロックの場合、画像バナーだけでなくポチップなどのブロックもアイテムとして挿入できるので、汎用性も高いと思います。

カスタマイズの手順としては、

  • フルワイドブロックにリッチカラムブロックを配置
  • カラムに画像を配置
  • リッチカラムブロックをグループ化し、グループにクラス名を設定
  • グループ内のリッチカラムブロックを複製
  • CSSをコピペ

となります。まずは全体の流れを動画でご確認ください。

簡単ですよね。

それでは、各ステップごとに詳しく解説します。

カスタマイズ方法

STEP
フルワイドブロックの配置

フルワイドブロックを配置して、ブロック設定でコンテンツサイズをフルワイドに設定します。

「上下のPADDING量」は好みで設定してください。

フルワイドブロックの設定
STEP
リッチカラムブロックを配置

フルワイドブロック内に、アイテムセットとなるリッチカラムブロックを配置します。

「カラム間の余白」で「左右の余白」は必ず「0」に設定してください。

なお、「列数」は公開側ではCSSで制御するので無効になりますが、編集画面では見やすい数に設定してください。

リッチカラムブロックの設定
STEP
カラムに画像を配置

リッチカラムブロックのカラムに、アイテムとなる画像ブロックを配置します。

例では、バナー画像の例として「320px×100px」サイズの画像を配置しています。

320px× 100px

まず、基本となるカラムを作成しアイテム(画像ブロック)を設定したら、カラムを必要数複製していきます。例では、6つのアイテムを配置しています。

このリッチカラムが、元となるアイテムセットになります。

カラムの設定
STEP
リッチカラムブロックをグループ化し、クラス名を設定

上記で作成したリッチカラムブロックをグループ化し、「高度な設定」で「追加CSSクラス」にinfiniteLoopを設定します。

逆方向(左から右)にアニメーションさせたい場合は「-reverse」クラスも追加します。

infiniteLoop -reverse

グループにクラス名を付与
STEP
アイテムセットを複製

シームレスな繰り返し表示」を実現するには、先ほど作成したアイテムセット(リッチカラムブロック)を複製します。

最終的なブロック要素の構成としては画像のように、「6つのアイテムが配置されたアイテムセット2つをグループ化」ということになります。

ブロック要素の構成
STEP
CSSをコピペ
/* =========================================================
//  コピペで簡単!無限ループアニメーション
// ========================================================= */
/* 無限ループアニメーション */
@keyframes infinite-loop {
  to {
    transform: translateX(-100%);
  }
}
/* 無限ループアニメーションのメインスタイル */
.infiniteLoop {
  /* 設定項目 START */
  --item-max-width: 400px; /* 各アイテムの最大幅 */
  --item-mobile-width: 80vw; /* スマホでのアイテムの幅 */
  --duration: 12s; /* アニメーションスピード */
  --gap: 1rem; /* 各アイテム同士の間隔 */
  /* 設定項目 END */
  --play-state: running;
  --direction: normal;
  --flex-direction: row;
}
.infiniteLoop.-reverse{--direction: reverse;--flex-direction: row-reverse}.infiniteLoop:hover{--play-state: paused}.infiniteLoop>*{display:flex}.infiniteLoop>*>*>*{overflow:hidden;transform:translateX(0);flex-wrap:nowrap !important;flex-direction:var(--flex-direction, row);margin:0 !important;padding-left:var(--gap) !important;gap:var(--gap);width:calc(var(--infinite-loop_width, 100vw)*1)}.infiniteLoop>*>*>*>*{padding:0 !important}.infiniteLoop>*>*>*>*>*{max-width:var(--item-max-width, 0px);margin-inline:auto}@media(min-width: 600px){.infiniteLoop>*>*>*{animation:infinite-loop var(--duration) linear infinite both var(--play-state) var(--direction);will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media not all and (min-width: 600px){.infiniteLoop>*>*:nth-child(n+2){display:none}.infiniteLoop>*>*>*{-webkit-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory;overflow-x:scroll;padding:0 calc((100vw - var(--item-mobile-width, 80vw)) / 2) !important;-webkit-overflow-scrolling:touch;-ms-overflow-style:none;scrollbar-width:none}.infiniteLoop>*>*>*::-webkit-scrollbar{display:none}.infiniteLoop>*>*>*>*{flex-shrink:0;width:var(--item-mobile-width, 80vw) !important;scroll-snap-align:center}}

以下の設定項目は、必要に応じて変更してください。

  • 各アイテムの最大幅
    –item-max-width: 400px;
  • スマホでのアイテムの幅
    –item-mobile-width: 80vw;
  • アニメーションスピード
    –duration: 12s; ※10秒=10s
  • 各アイテム同士の間隔
    –gap: 1rem;

CSSをコピーし、適切な個所にコピペします。

サイト全体で使用する場合: 「カスタマイザ > 追加CSS」 あるいは「テーマのstyle.css

特定の固定ページで使用する場合: 「カスタムCSS&JS > CSS用コード

完成

投稿リストの場合

投稿リストを無限ループアニメーション化することで、簡易的な「記事スライダー」としても活用できます。

投稿リストの場合は、画面内に表示する数を6以上にすると、アイテム幅が狭くなりタイトルなどが読みにくくなるので、アイテム数は4~5アイテムが最適です。

カスタマイズの手順はリッチカラムブロックと同様です。
「リッチカラムブロック」のところを「投稿リストブロック」に置き換えてください。

ボックスメニューの場合

ボックスメニューの場合は、最初幅が狭い場合が多いと思うので、6~8(以上)アイテムが最適です。

カスタマイズの手順はリッチカラムブロックと同様です。
「リッチカラムブロック」のところを「ボックスメニューブロック」に置き換えてください。

「ボックス間の余白」を「0」に設定することを忘れずに。

実装例

以下に、リッチカラム、投稿リスト、ボックスメニューの実装例を表示します。

リッチカラム:5アイテム

リッチカラム:6アイテム
(リバース)

投稿リスト:4アイテム

投稿リスト:5アイテム
(リバース)

ボックスメニュー:6アイテム

ボックスメニュー:8アイテム
(リバース)

サポートフォーム

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

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テーマ。
ブロックエディター完全対応!

目次