モーダルウィンドウを閉じた時にトップへスクロールしてしまう(トップへ戻ってしまう)
モーダルウィンドウを閉じた時にトップへスクロールしてしまいます。(トップへ戻ってしまう)
閉じた時も、スクロールせずに開いた位置で閉じるようにしたいです。
該当のソースコード
HTML
1<a href="#" class="js-modal-open" data-target="modal01"> 2 <div> 3 <img src="img/〇〇.jpg" alt="" /> 4 </div> 5 <p>〇〇</p> 6</a> 7<div id="modal01" class="modal js-modal"> 8 <div class="modal-bg js-modal-close"> 9 <div class="modal-content"> 10 <a href="#" class="js-modal-close">×</a> 11 <img src="img/〇〇.jpg" alt=""> 12 </div> 13 </div> 14</div>
CSS
1*{ 2 margin: 0; 3 padding: 0; 4} 5 6.modal{ 7 display: none; 8 position: fixed; 9 top: 0; 10 right: 0; 11 height: 100vh; 12 width: 100%; 13} 14 15.modal-bg{ 16 position: absolute; 17 height: 100vh; 18 width: 100%; 19 background: rgba(0, 0, 0, 0.8); 20} 21 22.modal-content{ 23 position: absolute; 24 top: 55%; 25 left: 50%; 26 transform: translate(-50%, -50%); 27 overflow: scroll; 28 height: 80%; 29 width: 80%; 30 border-radius: 10px; 31 background: #fff; 32 padding: 40px; 33} 34 35body.fixed { 36 position: fixed; 37 width: 100%; 38 height: 100%; 39 left: 0; 40}
jQuery
1// モーダルウィンドウを開く 2$('.js-modal-open').on('click', function(){ 3 var target = $(this).data('target'); 4 var modal = document.getElementById(target); 5 scrollPosition = $(window).scrollTop(); 6 $('body').addClass('fixed').css({'top': -scrollPosition}); 7 8 $(modal).fadeIn(); 9 return false; 10}); 11 12// モーダルウィンドウを閉じる 13$('.js-modal-close').on('click', function(){ 14 $('body').removeClass('fixed'); 15 window.scrollTo( 0,{'top': -scrollPosition} ); 16 17 $('.js-modal').fadeOut(); 18});
試したこと
①ポップアップにfixedというクラス名を付与し、スクロール位置取得、その場で固定
②閉じるをクリックした際に、fixedクラスを取り、再度スクロール位置取得、該当箇所までスクロール
この手順でうまくいくと思ったのですが、できませんでした。
window.scrollTo( 0,{'top': -scrollPosition} );で閉じた時もスクロールした分の位置までスクロールしてくれると思ったのですが、トップへ戻ってしまいました。
var target = $(this).data('target');
var modal = document.getElementById(target);
上記の記述があるのは、ページ内に複数のモーダルを設置しているからです。
もう4日ほど悩み、心が折れそうなので、どなたかご教授頂けますと幸いです。宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー