プラグインやライブラリを使用せずに jQuery + CSS でモーダルウィンドウを実装する(リサイズ対応)
モーダルウィンドウを実装するプラグインやライブラリ、探せば結構あります。remodal.js とか、すごく便利ですね。
ただ、今回はプラグインやライブラリを使用せずにモーダルウィンドウを実装する方法をご紹介します。
時と場合に応じて使い分けてください。
html
※省略しておりますが、「head」内でjQueryを読み込んでくださいね。
<p><a data-target="modal" class="modal_open">モーダルを表示</a></p> <div id="modal" class="modal_box"> <p><a class="modal_close"></a></p> <p>ここにモーダルウィンドウ内で表示したいコンテンツ内容を記述します。</p> <p>モーダルウィンドウを閉じる場合は、右上の×をクリックするか、背景の黒い部分をクリックしてください。</p> </div>
CSS
.modal_bg { display: none; position: fixed; top: 0; left: 0; z-index: 1; background: rgba(0,0,0,0.7); width: 100%; height: 100%; } .modal_box { display: none; position: fixed; z-index: 2; background: #fff; width: 80%; padding: 50px; box-sizing: border-box; } .modal_close { display: block; position: absolute; top: 0; left: 0; width: 35px; height: 35px; } .modal_close:before { content: "\00d7"; display: block; position: absolute; top: 0; left: 0; width: 35px; text-align: center; line-height: 35px; font-family: Arial, "Helvetica CY", "Nimbus Sans L", sans-serif !important; font-size: 35px; color: #999; cursor: pointer; }
jQuery
$(function() { $('.modal_open').click(function(){ $('body').append('<div class="modal_bg"></div>'); $('.modal_bg').fadeIn(); var modal = '#' + $(this).attr('data-target'); function modalResize(){ var w = $(window).width(); var h = $(window).height(); var x = (w - $(modal).outerWidth(true)) / 2; var y = (h - $(modal).outerHeight(true)) / 2; $(modal).css({'left': x + 'px','top': y + 'px'}); } modalResize(); $(modal).fadeIn(); $('.modal_bg, .modal_close').off().click(function(){ $('.modal_box').fadeOut(); $('.modal_bg').fadeOut(200,function(){ $('.modal_bg').remove(); }); }); $(window).on('resize', function(){ modalResize(); }); }); })
難しそうな所解説
3行目
body に グレイアウトする背景用の div.modal_bg を追加します。
6〜12行目
モーダル要素の上下中央寄せを function 化しております。
21行目
ウィンドウがリサイズされた時に上下中央寄せ function が発動するようにしています。
MovableType/WordPressを使ったホームページ制作、機能追加や設置代行などの改修、システム開発、サイトの保守を手掛けております。
アナタが実現させたい機能、やりたい事をお聞かせいただけませんか? そのイメージを一緒に実現しましょう!
お問い合わせは以下のページから!!