JavaScript

【jQuery】モーダルウィンドウの実装!プラグインなしで簡単に作れる方法

JavaScript

【jQuery】モーダルウィンドウの実装!プラグインなしで簡単に作れる方法

今回紹介するモーダルは、プラグインを使用せずに簡単なjQueryだけで実装しています。

以下のデモではCSSjQueryは同じコードを使用していますが、モーダル内のコンテンツ量が「 少ない 」場合と「 多い 」場合でモーダルの表示位置が異なるのが特徴です。

デモ① モーダル内のコンテンツが少ない場合

See the Pen modal-window01_01_FIX by RECOOORD (@recooord) on CodePen.

モーダル内のコンテンツが少ない場合は、モーダルがウィンドウの上下中央に表示されます。
またモーダルを閉じるときは「CLOSE」ボタンを押すと閉じることができますし、モーダルの周りをクリックしても閉じることができます。

デモ② モーダル内のコンテンツが多い場合

See the Pen modal-window01_02_FIX by RECOOORD (@recooord) on CodePen.

モーダル内のコンテンツが多い場合、上下中央に表示されてしまうと上の文字が見切れてしまい、文章が読みづらくなりますので、上基点としてモーダルが表示されます。
下にはみ出した要素はスクロールすると閲覧することができます。

この2つのデモは同じコードを使用していますので、モーダル内のコンテンツが少ない場合でも、多い場合でも柔軟に利用することができます。
以下、今回使用したコードを掲載します。

HTML

<button class="open">OPEN</button>
<div class="container">
	<div class="overlay"></div>
	<div class="body">
		<div class="main">
			<div class="content">
				<p class="text"><span>Lorem ipsum dolor sit amet</span></p>
				<button class="close">CLOSE</button>
			</div>
		</div>
	</div>
</div>

CSS

button{
  max-width: 250px;
  width: 100%;
  height: 50px;
  font-size: 16px;
  font-weight: bold;
  color: #fff;
  background: #000;
  border: none;
  cursor: pointer;
}
button:hover{
  opacity: .7;
}
.open{
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
}
.container{
  display: none;
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  overflow: auto;
}
.overlay{
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: rgba(0,0,0,0.5);
}
.body{
  display: table;
  width: 100%;
  height: 100%;
}
.main{
  display: table-cell;
  text-align: center;
  vertical-align: middle;
  padding: 25px;
}
.content{
  position: relative;
  display: inline-block;
  width: 70vw;
  background: #fff;
  padding: 25px;
  box-sizing: border-box;
}
.text{
  line-height: 1.8;
  padding: 0 0 25px;
}
span{
  display: inline-block;
  text-align: left;
}

jQuery

$(function(){  
  var a = $('.container'),
      b = $('.overlay'),
      c = $('.open'),
      d = $('.close'); 

  //OPENをクリックでモーダルを開く
  c.on('click',function(){
    a.fadeIn();
  });
  
  //CLOSEをクリックでモーダルを閉じる
  d.on('click',function(){
    a.fadeOut();
  });
  
  //モーダルの周りをクリックで閉じる
  b.on('click',function(){
    a.fadeOut();
  });
});

まとめ

いかがだったでしょうか。
プラグインを使わずとも、簡単にモーダルウィンドウを実装することができましたね。
モーダルウィンドウの実装はWebサイト制作では頻繁に扱いますので覚えておきましょう。

あなたにおすすめの記事