もくじ
CSS
/** モーダルを作成**/ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100vh; } .modal_bg { background-color:rgba(30,51,77,0.9); position: absolute; left: 0; top: 0; width: 100%; height: 100vh; } .modal_container { background-image: url('{{asset('/home/images/bg2.png')}}'); background-repeat: repeat-y; position: absolute; width: 1200px; top: 10%; }
.modal_containerが重要
.modal_bg { background-color:rgba(30,51,77,0.9); position: absolute; left: 0; top: 0; width: 100%; height: 100vh; } .modal_container { background-image: url('{{asset('./images/bg2.png')}}'); background-repeat: repeat-y; position: absolute; width: 1200px; top: 10%; }
HTML
<div class="btn_more_quest js_modal_quest_open"><a href="#">もっと見る</a></div> <div class="modal js_modal_quest"> <div class="modal_bg js_modal_close"></div> <div class="modal_container"> <div class="bg-inner"> <h4>進行中のクエスト<div class="btn_more_quest js_modal_close"><a href="#">閉じる</a></div></h4> <div class="wide_table_container"> <table class="wide_table"> <tr><th width="27%">クエスト名</th><th width="13%">勇者</th><th width="10%">攻略状況</th><th>未踏</th><th style="text-align: right;"><div class="label_bar_container"><div class="label_bar_gross_profit"></div> 予想粗利 <div class="label_bar_sales"></div> 売上</div></th></tr> <tr><td>にゃんにゃんランド</td><td>優さん</td><td>3500万</td><td colspan="2"><div class="bar_gross_profit" style="max-width: 50%"></div><div class="bar_sales" style="max-width: 50%"></div></td></tr> <tr><td>わんわんランド</td><td>鈴木</td><td>2500万</td><td colspan="2"><div class="bar_gross_profit" style="max-width: 75%"></div><div class="bar_sales" style="max-width: 10%"></div></td></tr> <tr><td>魔界</td><td>田中</td><td>2000万</td><td colspan="2"><div class="bar_gross_profit" style="max-width: 30%"></div><div class="bar_sales" style="max-width: 50%"></div></td></tr> </table> </div> </div> </div> </div> </div>
jQuery
<script type="text/javascript"> // モーダルの制御関数定義 var modalContainer; // モーダルのコンテナ var modalContents; // モーダルコンテンツ var appearModal = function (modalContainer, modalContents) { $(function (){ $(modalContainer).on('click',function() { $(modalContents).fadeIn(); pos = $(window).scrollTop(); $('body').css('overflow', 'hidden'); return false; }); $('.js_modal_close').on('click',function() { $(modalContents).fadeOut(); $('body').css('overflow', ''); $('body').prop({scrollTop: pos}); return false; }); }); } // モーダルの制御関数定義 ここまで // ブラウザの幅を取得してモーダルの横に中央配置にする関数定義 checkWidth = function() { // ブラウザの幅を取得 var browserWidth = $(window).width(); var modalWidth = $(".modal_container").width(); var plusPxW = ((browserWidth - modalWidth) / 2); $('.modal_container').css({'left': plusPxW + "px"}); } // ブラウザの幅を取得してモーダルの横に中央配置にする関数定義 ここまで $( function() { // モーダル実行 appearModal('.js_modal_quest_open', '.js_modal_quest'); // モーダル表示時に中央配置を実行 checkWidth(); $(window).resize(checkWidth); }); </script> <!-- モーダル End-->
ここポイント
var plusPxW = ((browserWidth - modalWidth) / 2);
(全体のブラウザサイズから – モーダルの幅) / 2 = モーダルのmargin-leftの値にすることで、動的中央配置が実現される🐱✨