スライダーをインラインフレームで読み込む、そんなページでアイフォンで不具合が・・・・・
アイフォンとインラインフレームはとても相性が良くない、悩みの種ですね。「Netscape Navigator」全盛期にはマイクロソフトの「IE」の我がまま仕様に困らせられた。
今はiPhoneに泣かされています。
今回のスライダーをインラインフレームで読み込むページ、いろいろなスライダーの中で相性が良かったのが「Flickity」、今後はインラインフレームで読み込む場合は「Flickity」をメインに使用していこうと思います。
[flickity]公式サイト:http://flickity.metafizzy.co
CDN
1 2 3 4 |
<!-- CSS --> <link rel="stylesheet" href="https://unpkg.com/flickity@2/dist/flickity.min.css"> <!-- JavaScript --> <script src="https://unpkg.com/flickity@2/dist/flickity.pkgd.min.js"></script> |
HTML
1 2 3 4 5 6 7 8 9 10 11 12 |
<div class="carousel" data-flickity='{ "autoPlay": true }'> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> <div class="carousel-cell"><img src="http://placehold.it/150x150" alt=""/></div> </div> |
オプション
オプション指定は3種類の方法があります。
HTMLに直接記述
1 |
<div class="main-carousel" data-flickity='{ "cellAlign": "left", "contain": true }'> |
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 |
var elem = document.querySelector('.main-carousel'); var flkty = new Flickity( elem, { // options cellAlign: 'left', contain: true }); // element argument can be a selector string // for an individual element var flkty = new Flickity( '.main-carousel', { // options }); |
jQuery
1 2 3 4 5 |
$('.main-carousel').flickity({ // options cellAlign: 'left', contain: true }); |
主なオプション
■セルの基準値・・・基準値を’center’,’left’,’right’で指定する。デフォルトは’center’
cellAlign: ‘left’
■無限スクロール・・・デフォルトはfalse
wrapAround: true
■セルをスライドでグループ化
groupCells: true
groupCells: 2
groupCells: ‘80%’
■自動再生・・・デフォルトはfalse、trueで3秒間隔で自動スクロール。秒数を指定したい場合は1500などミリ秒で指定する。
autoPlay: true
autoPlay: 1500 // 1.5 seconds
■スライドの高さに合わせてカルーセルの高さを変える
adaptiveHeight: true
■画像の遅延読み込み
lazyLoad: true
※各種オプションは下記を参考
Flickity v2 · Options
Touch, responsive, flickable carousels
※各種スタイルシートは下記を参考
Flickity v2 · Style
Touch, responsive, flickable carousels
サンプル(JavaScript指定)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Flickityサンプル</title> <!-- CSS --> <link rel="stylesheet" href="https://unpkg.com/flickity@2/dist/flickity.min.css"> <!-- JavaScript --> <script src="https://unpkg.com/flickity@2/dist/flickity.pkgd.min.js"></script> <style> .carousel { background: #EEE; } .carousel-cell { width: 230px; height: 230px; margin-right: 10px; background: #FFF; border-radius: 5px; border: 1px #414141 solid; padding: 10px; } </style> </head> <body> <div class="carousel"> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> <div class="carousel-cell"> <img src="http://placehold.it/400x400" width="100%"> </div> </div> <script> var elem = document.querySelector('.carousel'); var flkty = new Flickity( elem, { // options autoPlay: true, draggable: true, freeScroll: true, wrapAround: true }); </script> </body> </html> |
サンプルBootstrap4(jQuery指定)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>FlickityサンプルBootstrap4</title> <!-- Bootstrap CSS --> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"> <!-- CSS --> <link rel="stylesheet" href="https://unpkg.com/flickity@2/dist/flickity.min.css"> <style> .carousel { background: #EEE; } .carousel-cell { width: 230px; height: 230px; margin-right: 10px; background: #FFF; border-radius: 5px; border: 1px #414141 solid; padding: 10px; } </style> </head> <body> <div class="container"> <div class="carousel"> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> <div class="carousel-cell"> <img src="https://placehold.it/400x400" class="img-fluid"> </div> </div> </div> <!-- jquery --> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <!-- Bootstrap JS --> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> <!-- flickity JavaScript --> <script src="https://unpkg.com/flickity@2/dist/flickity.pkgd.min.js"></script> <script> $('.carousel').flickity({ // options autoPlay: true, draggable: true, freeScroll: true, wrapAround: true }); </script> </body> </html> |
サンプル(HTMLに直接記述)
最初のサンプルを参考にしてください。
コメント