ギャラリービュー
デモ
JSコードコピー
使い方
div
要素を1つ作り、そこにdata-jscopyand="gallery"
を付与してください。
その下に任意の画像を置いてください。
解説
ギャラリービューの対象要素を特定し、変数に格納します。
子要素の画像一覧も変数に格納します。
children
で取得した値はそのままでは反復処理ができないため、Array.from()
で配列に変換します。
ギャラリービューに必要となる要素を作っていきます。
まずは全ての入れ物になる要素gallery
です。
画面を覆い、子要素を上下中央配置にするようなスタイルを当てておきます。
次に画面を黒の半透明で覆うoverlay
です。
兄弟要素よりも下に表示されるようにz-index: -1;
にしておきます。
画像表示を前後に切り替えるprev
とnext
、画像の入れ物になるgalleryImage
も定義します。
ギャラリービューに表示する画像は、先に取得していた画像一覧images
の各要素を複製して用意します。
ここまでに作った要素を配置していきます。
gallery
はdocument.body
の一番後ろに配置します。
overlay
、prev
、next
、galleryImage
はgallery
の中に配置します。
prev
-> galleryImage
->
next
という順番は実際に横並びで表示される順番になっています。
複製した画像は反復処理でgalleryImage
の中に配置します。
表示切り替えの関数を作っていきます。
まずは画像の切り替え関数です。
showClonedImage
は指定された位置の画像1つを表示します。
hideClonedImage
は画像全てを非表示にします。
続いてギャラリービュー全体の切り替え関数です。
showGallery
はギャラリービュー全体を表示するとともに、引数を受け取ってshowClonedImage
関数を呼んで画像1つを表示します。
display
の設定値は元々設定されているflex
にします。
hideGallery
はギャラリービュー全体を非表示するとともに、hideClonedImage
関数を呼んで画像全てを非表示にします。
初期状態を非表示にするためhideGallery
を呼んでおきます。
サムネイル画像の表示とそれが押されたときのイベントを設定していきます。
現在の表示位置を保持する変数currentIndex
を定義しておきます。
先に取得した画像一覧で反復処理を行い、サムネイル画像になるようにサイズなどのスタイルを調整します。
クリックイベントでは自身の位置を取得してcurrentIndex
を更新、その後にギャラリービューの中に配置した複製画像を表示するように関数showGallery(位置)
を呼びます。
ギャラリービューの中に表示する「前へ」、「次へ」というテキストの表示切り替え関数を定義します。
それぞれ前の画像、次の画像がないときには非表示にします。
「前へ」、「次へ」テキストが押されたときのイベントを設定します。
最初にギャラリービュー内の画像を関数hideClonedImage
全て非表示にします。
続いて現在の表示位置currentIndex
を更新するとともに、画像切り替え関数showClonedImage
を呼びます。
最後に「前へ」、「次へ」テキストの表示切り替え関数switchTriggerDisplay
を呼びます。
オーバーレイが押されたときには関数hideGallery
でギャラリービューを非表示にします。
ヘルプ・コンタクト
機能に関するご質問は、このページの下部に表示されている Twitter
のアイコンから Twitter に遷移後、 DM 等でご連絡ください。
導入サポートやカスタマイズも有償にてお受け致しますので、 DM
等でご連絡ください。