Railsで複数の画像をスライド表示させる
WHY
オリアプで複数の画像をスライド表示させる機能を実装しましたのでアウトプットしていきます。
今回はrailsでjqueryのslickというプラグインを使用して画像をスライド表示させていきます。
準備
画像を貼り付けたりしてビューを整えていきます。
ビューファイル
<div class="background">
<div class="images">
<%= image_tag "sample1.jpg" %>
<%= image_tag "sample2.jpg" %>
<%= image_tag "sample3.jpg" %>
<%= image_tag "sample4.jpg" %>
</div>
</div>
----CSS----
.images{
width: 50vw;
height: auto;
}
それではこの並んでいる画像をスライドで表示していけるようにしていきたいとおもいます。
まずはJqueryを導入します。views/shared/application.html.erbに以下のように記述します。
↓を記述
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
↓もともとある
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
続いて下に3行追加します。
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/[email protected]/slick/slick.css"/>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/[email protected]/slick/slick-theme.css"/>
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>
最後にjavascript/packs/application.jsの最後に以下の記述をします。
$(function() {
$('.images').slick({
dots: true,
});
});
確認
画像が一枚になり、見づらいですが点が4つつきました。ビューをもう少し見えやすくします。
.background{
background-color: gray;
width: 40vw;
height: auto;
margin: auto;
}
.images{
width: 30vw;
height: auto;
padding: 30px;
margin: auto;
background-color: lightblue;
}
.images img{
width: 50%;
height: auto;
}
するとこのように矢印が見え、画像をスライドさせることに成功しました。
slickでは多数のオプションやイベントが用意されており、矢印を変更させたり、自動再生をするか否かを設定できたりと自分好みにカスタマイズできます!
詳しくはこちらの記事がわかりやすかったです。
https://webdesignday.jp/inspiration/technique/jquery-js/3847/
今回おそらく初のライブラリを導入しましたが、とても便利さに驚きました!今後もどんどん調べていきたいと思います!
Author And Source
この問題について(Railsで複数の画像をスライド表示させる), 我々は、より多くの情報をここで見つけました https://qiita.com/totacho/items/f7f9606a6e4110d0534a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .