Search code examples
javascriptcssmodal-dialoggoogle-keep

how to make dialog like google keep in pure js and css


how can i create dialog effect like google keep.i tried to debug the css but without any success. is there code example out there ?

i see that they using hidden position fixed modal that triggering on click but how they calculate the position.

modal open animation

modal open

modal close


Solution

  • To create a modal, you can use a library called Swal. Swal, however does not look like keep's popups, so I've restyled it below.

    script links you must reference to:
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-material-ui/material-ui.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/>
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@10"></script>.
    You may also wish to visit Google Fonts and pick a nice font-family. Test this pop-up by clicking run this snippet.

    const MySwal = Swal.mixin({
        //background: "rgb(10,10,10)",
        background: "white",
        showCloseButton: true,
        backdrop: "rgba(0,0,0,0.7)",
    
    
        showClass: {
            popup: "animate__animated animate__fadeInDown med"
        },
    
        hideClass: {
            popup: "animate__animated animate__fadeOutUp fast"
        },
    
        width: "95vw"
    
    });
    <head>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.js" integrity="sha512-HBD0cOZJYcymSn0H0CnN3VBhQLdiH8imucm16ZQ792TT2n48u6nmX+T7hZTCwmzIrgMt76x4rHhR7KkZqhIGxA==" crossorigin="anonymous"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    
        <meta charset="UTF-8">
        <script src="https://cdn.jsdelivr.net/npm/sweetalert2@10"></script>
        <script src="alpha.js"></script>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/>
        <link rel="shortcut icon" href="favicon.png" id="iconshort">
    
    
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-material-ui/material-ui.css">
    
    
    
        <script src='https://kit.fontawesome.com/a076d05399.js'></script>
        <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
    </head>
    
    <body>
    <button onclick="MySwal.fire('Title','Content')">LAUNCH POP-UP</button>
    </body>

    const MySwal = Swal.mixin({
        //background: "rgb(10,10,10)",
        background: "white",
        showCloseButton: true,
        backdrop: "rgba(0,0,0,0.7)",
    
    
        showClass: {
            popup: "animate__animated animate__fadeInDown med"
        },
    
        hideClass: {
            popup: "animate__animated animate__fadeOutUp fast"
        },
    
        width: "95vw",
    
        willOpen: function() {
            open_audio.play();
        },
    
        willClose: function() {
            confirm_audio.play();
        }
    
    });