自作プラグイン/swiper

2023-05-26 (金) 02:10:10

カテゴリ:プラグイン 自作 追加

swiper.jpg

スワイプ操作しやすいスライダープラグイン

swiper.inc.php
製作者kanateko
ライセンスGPLv3
バージョン1.1.3
動作確認PukiWiki 1.5.4 - 1.5.4
最終更新2023-05-26

ページ内容を任意の範囲で区切って、スワイプ操作に最適化されたスライダーを作成できるプラグイン。
Swiper.jsを利用しており、過去に作成したsliderslidehsowと違って動作にjQueryを必要としない。

cardプラグインと連携可能。

  • ページ内容を任意の範囲で区切ってスライドにする。
    • 複数設置可能
    • 切り分け用のタグは変更可
  • スライダー (swiper) の設定を細かく変更可能
  • cardプラグインのスライド化
    • プラグインを別途導入する必要あり
  • スライダーにクラス名を追加可能

ダウンロード

最新: GitHub

日付バージョン備考
2023-05-261.1.3
  • containerWidthオプションの処理にミスがあったのを修正
2023-03-311.1.2
  • 幅や高さ指定の処理を変更
  • 縦スライドやグリッド表示の処理を改善
2023-03-301.1.1
  • 重複していたオプションを削除
  • 反映されていなかったオプションを修正
1.1.0
  • cardプラグインとの連携機能を追加
  • slidesPerGroup関連オプションを追加
  • breakpoints関連オプションを追加
2023-03-231.0.0
  • 初版作成

セットアップ

  1. GitHubからダウンロードした「plugin-swiper」フォルダの中身 (plugin, skin) をPukiWikiのディレクトリに放り込む。
  2. pukiwiki.ini.phpでマルチラインプラグインを許可する。
     define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled
    

プラグイン設定

定数名初期値説明
グローバル (PLUGIN_SWIPER_~)
JSstring'https://cdn.jsdelivr.net/npm/swiper@9/swiper-bundle.min.js'SwiperのJS用CDN
CSSstring'https://cdn.jsdelivr.net/npm/swiper@9/swiper-bundle.min.css'SwiperのCSS用CDN
WIKI_CSSstringSKIN_DIR . 'css/swiper.css'プラグイン用CSSのパス
SPLIT_TAGstring'#-'スライド分割用の文字列
SwiperConfigクラス
ENABLE_AUTOboolfalseデフォルトで自動再生を有効にする
ENABLE_GRABboolfalseデフォルトでつかむ見た目のカーソルを有効にする
ENABLE_LOOPboolfalseデフォルトでループを有効にする (rewindと排他)
ENABLE_NAVboolfalseデフォルトで前/次の矢印を有効にする
ENABLE_REWINDboolfalseデフォルトで巻き戻りを有効にする (loopと排他)
ENABLE_WHEELboolfalseデフォルトでマウスホイール操作を有効にする
BP_LARGERint720ブレイクポイント (大) (cardとの連携用)
BP_SMALLERint460ブレイクポイント (小) (cardとの連携用)
DIRECTIONstring'horizontal'デフォルトのスライド方向 (horizontal, vertical)
EFFECTstring'false'デフォルトのスライドエフェクト (false, fade, cube, coverflow, flip, cards, creative)
PAGINATIONstring'bullets'デフォルトのページネーションスタイル (false, bullets, dynamic, progressbar, fraction)
LOOP_PRIORITYstring'rewind'ループ系オプションが競合している場合の優先度 (loop, rewind)

使用方法

#swiper([オプション]){{
スライド1
#-
スライド2
#-
︙
}}

オプション

指定可能なオプションは以下の通り。一部のオプションは省略した名称を使うこともできる。

true/falseで指定可能なオプションは<オプション名>のみでも有効化できる。それ以外は<オプション名>=<値>で指定する。

Swiperの各オプションの詳細は公式ドキュメントを参照

Swiperのオプション

オプション名省略型名称のみ概要
autoplayautotrue, false, <数値>自動再生のオンオフ。値でディレイを変更可能 (ms)。auto=5000
autoHeight-true, falseスライドごとに高さを合わせる。autoHeight
breakpointsbp<幅>-<slidesPerView>-<slidesPerGroup>レスポンシブ用のブレイクポイント設定。"|"で区切って複数指定可能。760-5-1|420-2-2
breakpointsBasebasewindow, containerブレイクポイントの基準とする要素。base=window
centeredSlidescentertrue, falseアクティブなスライドを中央に表示する。center
direction-horizontal, verticalスライド方向を変更する。direction=vertical
effect-false, cube, coverflow, fade, flipスライド時のエフェクトを変更する。effect=cube
freeModefreetrue, falseスライドのスナップを無効化する。free
grabCursorgrabtrue, falseホバー時のカーソルをつかむアイコンに変更する。grab=false
grid-<数値>, col<数値>, row<数値>スライドをグリッド表示にする。colやrowの指定がない (数値のみ) 場合は自動的にcol扱い。grid=2
initialSlidestart<数値>スライドの初期位置を指定する (0 = 1枚目) 。start=2
loop-true, falseスライドをループさせる。loop
mousewheelwheeltrue, falseマウスホイールでスライドを操作可能にする。wheel
navigationnavtrue, false前/次へボタンを表示する。nav
paginationpagingfalse, bullets, dynamic, progressbarページネーションのスタイルを変更する。paging=dynamic
rewind-true, false最後のスライドから最初のスライドまで巻き戻す。rewind
rtl-true, falseスライドを右から開始する。rtl
scrollbar-true, falseスクロールバーを表示する。scrollbar
slidesPerGroupgroupauto, <数値>一度にスライドする枚数を指定する。autoでslidesPerGroupAuto=trueを指定したことになる。group=3
slidesPerGroupAutogroup=autotrue, falseスライドする枚数を自動で決定する。slidesPerGroupAuto=true
slidesPerGroupSkipskip<数値>最初から数えて指定した枚数のスライドをslidesPerGroupの対象から除外する。skip=2
slidesPerViewnumauto, <数値>一度に表示するスライドを指定する。num=auto
spaceBetweengap<数値>スライド間の余白を指定する。gap=8
speed-<数値>スライド速度を指定する (ms) 。speed=1000

その他のオプション

オプション名省略型名称のみ概要
class-<クラス名>追加のクラスを指定する。class=table_compact
containerHeight_height<数値>スライダーのコンテナの高さを指定する。主に縦スライダー用やグリッド用。_height=500
containerWidth_width<数値>スライダーのコンテナの幅を指定する。_width=500
height-<数値>スライドの高さを指定する。主に縦スライダー用やグリッド用。height=300
plugin-card他のプラグインとの連携を有効にする。plugin=card
width-<数値>スライドの幅を指定する。width=300

使用例

基本

1.webp

2.webp

3.webp

4.webp

5.webp

#swiper{{
&ref(1.webp,nolink);
#-
&ref(2.webp,nolink);
#-
&ref(3.webp,nolink);
#-
&ref(4.webp,nolink);
#-
&ref(5.webp,nolink);
}}

ナビゲーション、表示枚数、スライド枚数

1.webp

2.webp

3.webp

4.webp

5.webp

#swiper(nav,num=2,group=2,skip=1){{
&ref(1.webp,nolink);
#-
&ref(2.webp,nolink);
#-
&ref(3.webp,nolink);
#-
&ref(4.webp,nolink);
#-
&ref(5.webp,nolink);
}}

エフェクト、ループ

1.webp

2.webp

3.webp

4.webp

5.webp

#swiper(effect=cube,paging=dynamic,loop){{
&ref(1.webp,nolink);
#-
&ref(2.webp,nolink);
#-
&ref(3.webp,nolink);
#-
&ref(4.webp,nolink);
#-
&ref(5.webp,nolink);
}}

縦スライド、ホイール操作

1.webp

2.webp

3.webp

4.webp

5.webp

#swiper(direction=vertical,autoHeight,wheel){{
&ref(1.webp,nolink);
#-
&ref(2.webp,nolink);
#-
&ref(3.webp,nolink);
#-
&ref(4.webp,nolink);
#-
&ref(5.webp,nolink);
}}

グリッド

1.webp

2.webp

3.webp

4.webp

5.webp

#swiper(grid=2,num=2,_height=440,height=210,gap=10){{
&ref(1.webp,nolink);
#-
&ref(2.webp,nolink);
#-
&ref(3.webp,nolink);
#-
&ref(4.webp,nolink);
#-
&ref(5.webp,nolink);
}}

カードプラグインとの連携

#swiper(plugin=card,group=auto,rewind){{{
#card(5){{
#taglist(プラグイン^自作-一覧)
}}
}}}

追加したい機能

  • スライド追加ボタン
  • エフェクト系の詳細設定

備考

  • 縦スライドやグリッドの挙動が微妙なので要修正。 v1.1.2である程度改善。

コメント

最新の10件を表示しています。 コメントページを参照

  • 枚数を表す点がセンターに表示され、画像は左端詰めなのに対してスワイプがページの横幅いっぱい(空白ごとスワイプされる)になってしまいます
    なにか考えられる原因とかありますでしょうか…?
    _widthのオプションで指定してみましたが変わらずでした -- いちもり 2023-05-25 (木) 22:44:37
    • なんか変な質問になってますね…
      書き直すとこの2点です!
      ・左詰めにできるか
      ・縦のスワイプにしたとき、真横に別の画像を表示させることはできるか -- いちもり 2023-05-26 (金) 01:37:03
      • 確認したところcontainerWidthの指定を受け付ける処理にミスがあったので、修正したバージョンをアップロードしておきました。
        なお、現状スライドの左詰めor右詰めには対応していません (そもそもが画面いっぱいに表示して使用する前提なので) 。ですが、classオプションを使って左に寄せるためのクラスを適用すれば実現可能です。基本的に細かいカスタマイズはこのclassオプションを通して行ってもらう想定です。 -- kanateko 2023-05-26 (金) 02:07:16
    • ありがとうございます!素人質問ばかりで恐縮です… -- いちもり 2023-05-26 (金) 12:46:16