Categories
Uncategorized

Material Modal using CSS3

The following code tries to mimic the look and feel of the modal from Google’s Material Design using CSS3.

Modal

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto">
    <style>
      body {
        font-family: 'Roboto', serif;
        font-size: 18px;
        color: rgba(0, 0, 0, .87);
      }
      
      .modal {
        display: none;
        position: fixed;
        z-index: 1;
        padding-top: 100px;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        overflow: auto;
        background-color: rgba(0, 0, 0, 0.288);
      }
      
      .modal-content {
        background-color: #fefefe;
        margin: auto;
        padding: 20px;
        width: 80%;
        box-shadow: 5px 10px 8px #888888;
        border-radius: 2px;
      }
      
      button {
        background-color: lightblue;
        border: none;
        font-size: 18px;
        width: 140px;
        height: 40px;
        box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);
        cursor: pointer;
      }
      
      button:hover,
      button:focus,
      button:active,
      button:target {
        outline: none;
        background-color: skyblue;
      }
      
      .modal-header {
        font-weight: bold;
      }
      
      .modal-body {
        margin-top: 10px;
      }
      
      .modal-footer {
        padding: 10px;
        margin: 10px;
        margin-bottom: 20px;
        position: relative;
      }
      
      .close {
        background-color: #ffffff;
        position: absolute;
        right: 0;
        cursor: pointer;
        border: none;
        box-shadow: none;
      }
      
      .close:hover,
      .close:focus {
        background-color: skyblue;
      }
    </style>
  </head>
  <body>
    <h2>Modal</h2>
    <button onclick="openModal()">Open Modal</button>
    <div id="myModal" class="modal">
      <div class="modal-content">
        <div class="modal-header">Header Text</div>
        <div class="modal-body">This is some content beneath the header.</div>
        <div class="modal-footer">
          <button onclick="closeModal()" class="close">Close</button>
        </div>
      </div>
    </div>
    <script>
      let modal = document.getElementById('myModal');
 
      let openModal = () => modal.style.display = 'block';
 
      let closeModal = () => modal.style.display = 'none';
 
      window.onclick = (event) => {
        if (event.target == modal)
          closeModal();
      }
    </script>
  </body>
</html>

 

Demo