【jQuery】左右ボタンクリックで画像を横にスライドさせて表示

投稿者: | 2021年5月4日
JQueryアイキャッチ画像

本日はJavascriptとjQueryで左右のボタンを押したら、画像が横にスライド表示できる方法を解説していきたいと思います。

まずは下記の完成後の左右のボタンをクリックして、どのような動作になるかをご確認ください。

今回は1~5までの数字5枚の画像を使用します。

 

完成後

画像が表示されない場合はCtrl + F5 キーを押してみてください。

 

 

それではいってみましょう!

 

手順

作成手順

・HTMLで左右ボタンと画像領域を作成

・画像を配列に格納

・画像をロード時に追加挿入

・左のボタンのクリック時の動作を作成

・右のボタンのクリック時の動作を作成

大まかですが、このような流れで作成していきます。

 

HTML

まずはHTMLで左ボタンと右ボタンと画像挿入領域を作成します。

左矢印のボタン

右矢印のボタン

sampleImg14506のulを作成しておいて子の最後尾に、後程jQueryでliタグを自動挿入します。

 

画像パス

今回は5枚のサンプル画像を用意して配列に格納します。

※画像がない場合はページ下の今回使用した画像をダウンロードしてご使用してもOKです。

後でimgのsrc属性に画像パスを挿入するために、変数化して配列に格納します。

 

画像を挿入(jQuery)

繰り返し処理の(For)で画像の個数分、処理をします。

jQueryのappendでsampleImg14506 > ulの、子の最後尾にliのimgを追加していきます。この時にsrc属性に画像配列のimgAry14506[i](画像パス)が挿入されます。

 

左ボタンの処理(画像を右に移動させる)

左ボタンを作成して左ボタンを1回押す度に左の余白を設定すると、画像を右に移動させることが可能になります。

左ボタン解説

変数i(クリック数)で初期値を0に設定します。

(左右のクリック回数を求める為に使用します)

変数moveSide14506 で横の移動距離を設定します。

クリックイベントで左クリックした時の処理をします。

右ボタンが押された時のみ処理を実行するようにifで制御します。

(この処理をしないと永遠に左ボタンが有効になってしまい画像が表示領域からなくなってしまいます)

右クリックした回数を左ボタンを押す度に1個マイナスして右クリックした合計を差し引いて、0になった時に左ボタンが動作しないようにします。

移動幅をクリックした回数分(i)掛けて移動幅の合計を算出します。

(➇でマージンleft(左の余白設定)に使用するためにこの作業を実施します)

sample14506の子要素の画像liの先頭(li:first)を基準にanimateで移動させる処理を行います。

marginLeftで左のマージン(余白)をleftCnt14506(移動幅合計)で画像を右に移動させる設定をします。

右に画像が移動する際の速度(duration)を設定します。

 

右ボタンの処理(画像を左に移動させる)

右ボタンを作成して右ボタンを1回押す度に左の余白を設定すると、画像を左に移動させることが可能になります。

右ボタン解説

配列画像imgAry14506の配列数-1を取得します。

クリックイベントで右ボタンがクリックされた時の処理を記述します。

配列画像imgAry14506の配列の数だけ右ボタンがクリックで動作できるようにします。

(これをやらないと右クリックが永遠に効いて、左の余白が広がっていってしまうのでこの処理をifで制御します)

右クリックする度にプラスしていって、クリック回数(i)の合計を算出します。

moveSide14506(移動幅)×クリック数(i)で左のマージン幅を算出します。

(➆でマージンleft(左の余白設定)に使用するためにこの作業を実施します)

.sample14506の子要素li:first(この先頭)を基準にanimateで移動処理します。

marginLeft(左の余白)をleftCnt14506(移動幅合計)に設定することにより左に移動することになります。

durationで移動速度を設定します。

 

CSSの処理

・sample14506の画像表示部分だけ表示させて隠します。

sample14506 → overflow: hidden;

 

・ulの部分をマイナス設定して画像を半分隠します。

・矢印ボタンはこちら

・回転角度はこちら

 

わからない場合は次の全サンプルコードをコピペしてご自身でCSSのパラメータを動かしてご確認してみてください。

 

全サンプルコード

コピペで即試せます

 

今回使用した画像5枚

111 222 333 444 555

 

まとめ

画像の余白を上手く設定することで画像が横に移動することが分かったかと思います。

あとは左右ボタンのクリック数をカウントして制御しないと永遠に画像が移動していくので、その点も注意して作成すればスムーズに作成できるかと思います。

以上です。