Waku×2 プログラミング生活

駆け出しエンジニアが楽しみながら成長していくブログ

flexsliderでスライドショーを実装する

こちらもスクールでのチーム開発で使用したスライドショーの実装手順を書いておこうと思います。

下の画像(※食べログ本家の画像)のようなサムネイル画像つきのスライドショーを実装したかったので、色々調べたところ、flexsliderというjQueryプラグインで簡単に実装できる!
というのがあったので、そちらを使って実装してみました。が、意外とJSファイルやらCSSの調整など苦労したのであくまで私のケースですが、手順を書き残しておきます。

f:id:ywatanab0301:20181019145555p:plain



手順

1. FlexsliderのダウンロードページからFlexsliderのプラグイン一式zipファイルをダウンロードする。
2. application.html.hamlのhead部分にflexsliderのプラグインを読み込む記述をする。
3. app/assets/javascripts にflexslider.js というファイルを新たに作り、編集する。
4. view ファイルを編集する。
5. CSSファイルを編集してviewを整える。



1. FlexsliderのダウンロードページからFlexsliderのプラグイン一式zipファイルをダウンロードする。

flexslider2ダウンロードページはこちら

2. application.html.hamlのhead部分にflexsliderのプラグインを読み込む記述をする。

こちらにあるURLを拝借して、CDN上のJavascriptを読み込めるようにしてあげる。

app/views/layouts/application.html.haml

%head
  %script{src: "https://cdnjs.cloudflare.com/ajax/libs/flexslider/2.7.1/jquery.flexslider.min.js", rel: "stylesheet"}
3. app/assets/javascripts にflexslider.js というファイルを新たに作り、編集する。



app/assets/javascripts/flexslider.js

$(window).on('load', function() {
  $('#slider').flexslider({
    animation: "fade",
    prevText: "",
    nextText: "",
    controlsConatiner: '.flexslider-controls',
    manualControls: ".thumb li",
  });
});



4. view ファイルを編集する。



app/views/shops/show.html.haml

#slider.flexslider
  %ul.slides
    %li
      = image_tag @shop.pic1.url if @shop.pic1.present?
    %li
      = image_tag @shop.pic2.url if @shop.pic2.present?
    %li
      = image_tag @shop.pic3.url if @shop.pic3.present?
    %li
      = image_tag @shop.pic4.url if @shop.pic4.present?
    %li
      = image_tag @shop.pic5.url if @shop.pic5.present?
  .flexslider-controls
    %ul.thumb
      %li
        = image_tag @shop.pic1.url if @shop.pic1.present?
      %li
        = image_tag @shop.pic2.url if @shop.pic2.present?
      %li
        = image_tag @shop.pic3.url if @shop.pic3.present?
      %li
        = image_tag @shop.pic4.url if @shop.pic4.present?
      %li
        = image_tag @shop.pic5.url if @shop.pic5.present?

※「image_tag @shop.pic1.url 」の@shopはshopsコントローラで該当店舗のレコードを取得してインスタンス変数に代入したもののうち、pic1カラムに入っている画像データを取り出しています。「if @shop.pic1.present?」でデータが存在している時のみ表示させています。

5. CSSファイルを編集してviewを整える。

app/assets/stylesheets/_flexslider.scss
ここは、1でダウンロードしたzipファイルのうち、CSSファイルをsylesheetディレクトリに配置し、
application.scssでimportして、ブラウザの検証ツールでclass名やid名を参照しながら微調整しました。



じゃーん。完成しました!
下記サムネイル画像をクリックしても上段の画像が切り替わります!
f:id:ywatanab0301:20181019155610p:plain


参考にした記事

wpgatera.matrix.jp