###前提・実現したいこと
ボタンを押したらlightboxのようにコンテンツがポップアップし、
更に画像がスライドできるようにしたいです。
スライダーの「Swiper」をモーダルウィンドウで表示させれば可能なのではと思い、
下記のサイト様を参考にしながらなんとか合体させたのですが、
狙い通り表示される時もあれば、何回か更新したり画面幅を変更したりすると
画像が大きくなったり消えたりと挙動が安定しません。
試行錯誤しながら合体させたので無理矢理になってしまっていると思うのですが、
どの部分の所為で不安定になっているか原因が分からず困っています。
どうかご教示いただけないでしょうか。
不明確な点などありましたらご指摘ください。
◆参考にさせていただいたサイト様
https://www.willstyle.co.jp/blog/724/
https://www.tam-tam.co.jp/tipsnote/html_css/post8031.html
◆望んでいる挙動
・ボタン(画像)をクリックするとポップアップでスライダーが表示
・画像が小さい正方形のため、前後の画像も画面内に表示
・スライダー部分以外は黒の半透明で、その部分をクリックするとスライダーが非表示
・画面幅が変わっても対応できるようレスポンシブに
※ボタンとスライダーのセットは1ページ内に複数設置します。
※スライダーからのリンクはありません。
###発生している問題・エラーメッセージ
何回か更新や画面幅を変えた時に表示が崩れ、画像が大きくなったり消えたりと挙動が安定しません。
(正しく表示される時もあります)
###該当のソースコード
html
1<p class="swiper-btn"><img src="btn.jpg" alt=""></p> 2<div class="swiper"> 3<div class="swiper-container"> 4 <div class="swiper-wrapper"> 5 <div class="swiper-slide"><img src="img1.jpg" alt=""></div> 6 <div class="swiper-slide"><img src="img2.jpg" alt=""></div> 7 <div class="swiper-slide"><img src="img3.jpg" alt=""></div> 8 </div> 9 <div class="swiper-pagination"></div> 10</div> 11</div>
css
1https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.1/css/swiper.min.css 2と下記のコード 3 4.swiper-container .swiper-slide img{ max-width: 100%; height: auto; } 5.swiper-container{ position:fixed; top:50%; left:0; z-index:2; } 6#modal-bg{ width:100%; height:100%; background-color: rgba(0,0,0,0.5); position:fixed; top:0; left:0; z-index: 1; display:block; }
js
1◆モーダルウィンドウ用(head内) 2$(function(){ 3 $(".swiper").hide(); 4 5 $(".swiper-btn").click(function(){ 6 $(this).next().show(); 7 $("body").append('<div id="modal-bg"></div>'); 8 9 var h = $(this).next().find(".swiper-container").height(); 10 $(".swiper-container").css({ "margin-top": "-" + h/2 + "px" }); 11 12 $(".swiper,#modal-bg").click(function(){ 13 $(".swiper,#modal-bg").hide(0 ,function(){ 14 $('#modal-bg').remove() ; 15 }); 16 }); 17 }); 18}); 19 20◆swiperオプション用(bodyのすぐ上) 21var mySwiper = new Swiper ('.swiper-container', { 22 loop: true, 23 slidesPerView: 4, 24 spaceBetween: 10, 25 centeredSlides : true, 26 pagination: '.swiper-pagination', 27 breakpoints: { 28 767: { 29 slidesPerView: 2, 30 spaceBetween: 5 31 } 32 } 33})
###補足情報(言語/FW/ツール等のバージョンなど)
jquery(min):2.0.2
swiper(min):3.4.1

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/11 02:45
2017/10/11 02:59 編集
2017/10/12 04:28
2017/10/17 07:21