LoginSignup
3
0

More than 5 years have passed since last update.

ES2015で簡単なポップアップを作成

Last updated at Posted at 2018-03-10

今回はJavaScriptで簡単なポップアップのテンプレートを作ってみたのでサンプルコードを載せておきます。

index.html
<!DOCTYPE html>
<html lang='ja'>
<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <meta http-equiv='X-UA-Compatible' content='ie=edge'>
    <title>ポップアップのサンプル</title>
    <link rel='stylesheet' href='css/style.css'>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script>
</head>
<body>
    <button class="popupButton" id="js-clickEl">クリックする要素</button>
    <div class='popup' id="js-popup">
        <div class='popup_content'>
            <p class='popup_content_closeButton' id="js-popupCloseButton">X</p>
            <div class='popup_content_description'>何か文言が入ります</div>
        <div>
    </div>
    <script src="js/Popup.js"></script>
</body>
</html>
style.css
.popupButton {
    border: none;
    background: #323232;
    color: #fff;
    padding: 20px;
    border-radius: 33px;
    cursor: pointer;
}
.popup {
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background: rgba(5,5,5,0.8);
    opacity: 0;
    transition:all .3s;
    transform: scale(0);
}

.popup.is-active {
    transform: scale(1);
    opacity: 1;
}

.popup_content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: #fff;
    width: 400px;
    height: 360px;
    padding: 30px;
}

.popup_content_closeButton {
    cursor: pointer;
    text-align: right;
}

.popup_content_description {
    margin-top: 30px;
}
Popup.js
class PopUp {
    constructor(clickEl, popupEl, closeEl){
        this.clickEl = document.getElementById(clickEl)
        this.popupEl = document.getElementById(popupEl)
        this.closeEl = document.getElementById(closeEl)
    }
    setEventListener(){
        this.clickEl.addEventListener("click", this.displayPopup.bind(this));
        this.closeEl.addEventListener("click", this.closePopup.bind(this));
    }
    displayPopup(){
    this.popupEl.classList.add("is-active")
    }
    closePopup(){
        this.popupEl.classList.remove("is-active")
    }
}
const simplePopup = new PopUp('js-clickEl', "js-popup", "js-popupCloseButton");
simplePopup.setEventListener();


このPopupクラスを使って初期化した後の引数に対象となる要素のIDを入れればデザインの違うポップアップにも対応できます!

是非使ってみてください!

3
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
3
0