プラグインやライブラリを使用せずに 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を使ったホームページ制作、機能追加や設置代行などの改修、システム開発、サイトの保守を手掛けております。
アナタが実現させたい機能、やりたい事をお聞かせいただけませんか? そのイメージを一緒に実現しましょう!
お問い合わせは以下のページから!!