0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Javascriptで作る モーダルウィンドウ

Posted at

まず、モーダルを作る場合、部品が何個あるのか考えます。
今回のモーダルウィンドウでいうと、
①モーダルを呼び出すボタン
②モーダルが出てきた際の背景が黒い画像
③モーダルウィンドウ

大きく分けて、この3つが必要となる。

①モーダルを呼び出すボタン

<section class="container">
      <p>ボタンを押すとモーダルウィンドウが開きます</p>
       <button type="button" class="btn">開く</button>
    </section>

②モーダルが出てきた際の背景が黒い画像


<div class="mask" id="blackMask"></div>

③モーダルウィンドウ

<section class="modal" id="">
      <div class="top">
        <h1>Vue.js Modal Window!</h1>
        <input type="text">
      </div>
      <div class="under">
       <button type="button" class="btn">送信</button>
      </div>
    </section>

次にCSSで非表示設定、Javascriptで動きを付けていく

①mask と modalを非表示にする(CSS)
1.display: none;
2.transform: translateY(150px,-500px);
※モーダルは上から落ちてくる感じにしたいので、translateY(-500px);で上に置いとく
※SCSSの場合は、CSSではなく、IDの方にクラスを付けるため、{}の外側に書く


  const open = document.getElementById('open');
  const idMask = document.getElementById('idmask');
  const idModal = document.getElementById('idmodal');

  open.addEventListener('click', () => {
    idMask.classList.add('active');
    idModal.classList.add('drop');
  });
  idMask.addEventListener('click', () => {
    idMask.classList.remove('active');
    idModal.classList.remove('drop');
  });

基本的には、要素を取得してきてclickイベントで要素の付け外しを行う

おまけ


.modal {
  background: #ffffff;
  width: 200px;
  border-radius: 4px;
  transform: translate(150px,-500px);
  transition: transform 0.4s;

transition: transform 0.4s;を設定してあげることで、上からゆっくりと
モーダルが落ちてくる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?