Home » How To » Cara Membuat Modal Box

Cara Membuat Modal Box

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Di bawah ini kita akan mempelajari cara membuat Modal Box dengan menggunakan CSS dan JavaScript.

Cara Membuat Modal Box

Modal adalah kotak dialog / jendela popup yang ditampilkan di atas halaman saat kita mengklik button yang ada pada halaman, seperti ini contohnya:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}

/* The Modal (background) */
.modal {
  display: none; /* Disembunyikan secara default */
  position: fixed; /* Posisi tetap */
  z-index: 1; /* Posisi tetap di atas */
  padding-top: 100px; /* Lokasi box */
  left: 0;
  top: 0;
  width: 100%; /* lebar maksimum */
  height: 100%; /* tinggi maksimum */
  overflow: auto; /* Aktifkan scrolling jika perlu */
  background-color: rgb(0,0,0); /* Warna cadangan */
  background-color: rgba(0,0,0,0.4); /* warna hitam dengan opacity */
}

/* Konten untuk Modal box  */
.modal-content {
  background-color: #fefefe;
  margin: auto;
  padding: 20px;
  border: 1px solid #888;
  width: 80%;
}

/* Button Close  */
.close {
  color: #aaaaaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
}
</style>
</head>
<body>

<h2>Modal Example</h2>

<!-- Trigger/Open The Modal -->
<button id="myBtn">Open Modal</button>

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Konten Modal Box -->
  <div class="modal-content">
    <span class="close">&times;</span>
    <p>Contoh teks pada modal box</p>
  </div>

</div>

<script>
// dapatkan modalnya
var modal = document.getElementById("myModal");

// Dapatkan button yang membuka modal
var btn = document.getElementById("myBtn");

// Dapatkan elemen <span> yang menutup modal
var span = document.getElementsByClassName("close")[0];

// Ketika pengguna mengklik button, buka modal 
btn.onclick = function() {
  modal.style.display = "block";
}

// Saat pengguna mengklik <span> (x), tutup modal
span.onclick = function() {
  modal.style.display = "none";
}

// Saat mengklik di mana saja di luar modal, tutuplah
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}
</script>

</body>
</html>

Berikut ini langkah-langkah pembuatan modal box menggunakan css dan javascript :

Langkah 1) Tambahkan HTML:
Contoh

<!-- Trigger/Open The Modal -->
<button id="myBtn">Open Modal</button>

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Konten Modal Box -->
  <div class="modal-content">
    <span class="close">&times;</span>
    <p>Contoh teks pada modal box</p>
  </div>

</div>

Langkah 2) Tambahkan CSS:
Contoh

/* The Modal (background) */
.modal {
  display: none; /* Disembunyikan secara default */
  position: fixed; /* Posisi tetap */
  z-index: 1; /* Posisi tetap di atas */
  padding-top: 100px; /* Lokasi box */
  left: 0;
  top: 0;
  width: 100%; /* lebar maksimum */
  height: 100%; /* tinggi maksimum */
  overflow: auto; /* Aktifkan scrolling jika perlu */
  background-color: rgb(0,0,0); /* Warna cadangan */
  background-color: rgba(0,0,0,0.4); /* warna hitam dengan opacity */
}

/* Konten modal box */
.modal-content {
  background-color: #fefefe;
  margin: 15% auto; /* 15% dari atas dan tengah */
  padding: 20px;
  border: 1px solid #888;
  width: 80%; /* Bisa lebih atau kurang, tergantung ukuran layar */
}

/* Button Close  */
.close {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: black;
  text-decoration: none;
  cursor: pointer;
}

Langkah 3) Tambahkan JavaScript:
Contoh

<script>
// dapatkan modalnya
var modal = document.getElementById("myModal");

// Dapatkan button yang membuka modal
var btn = document.getElementById("myBtn");

// Dapatkan elemen <span> yang menutup modal
var span = document.getElementsByClassName("close")[0];

// Ketika pengguna mengklik button, buka modal 
btn.onclick = function() {
  modal.style.display = "block";
}

// Saat pengguna mengklik <span> (x), tutup modal
span.onclick = function() {
  modal.style.display = "none";
}

// Saat mengklik di mana saja di luar modal, tutuplah
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}
</script>

Modal Box Dengan Header dan Footer

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}

/* The Modal (background) */
.modal {
  display: none; /* Disembunyikan secara default */
  position: fixed; /* Posisi tetap */
  z-index: 1; /* Posisi tetap di atas */
  padding-top: 100px; /* Lokasi box */
  left: 0;
  top: 0;
  width: 100%; /* lebar maksimum */
  height: 100%; /* tinggi maksimum */
  overflow: auto; /* Aktifkan scrolling jika perlu */
  background-color: rgb(0,0,0); /* Warna cadangan */
  background-color: rgba(0,0,0,0.4); /* warna hitam dengan opacity */
}

/* Konten Modal Box */
.modal-content {
  position: relative;
  background-color: #fefefe;
  margin: auto;
  padding: 0;
  border: 1px solid #888;
  width: 80%;
  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
  -webkit-animation-name: animatetop;
  -webkit-animation-duration: 0.4s;
  animation-name: animatetop;
  animation-duration: 0.4s
}

/* Tambahkan animasi */
@-webkit-keyframes animatetop {
  from {top:-300px; opacity:0} 
  to {top:0; opacity:1}
}

@keyframes animatetop {
  from {top:-300px; opacity:0}
  to {top:0; opacity:1}
}

/* Button Close  */
.close {
  color: white;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
}

.modal-header {
  padding: 2px 16px;
  background-color: #5cb85c;
  color: white;
}

.modal-body {padding: 2px 16px;}

.modal-footer {
  padding: 2px 16px;
  background-color: #5cb85c;
  color: white;
}
</style>
</head>
<body>

<h2> Contoh Modal Animasi dengan Header dan Footer</h2>

<!-- Trigger/Open The Modal -->
<button id="myBtn">Open Modal</button>

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <div class="modal-header">
      <span class="close">&times;</span>
      <h2>Modal Header</h2>
    </div>
    <div class="modal-body">
      <p>Tuliskan teks</p>
      <p>Hello Semua!</p>
    </div>
    <div class="modal-footer">
      <h3>Modal Footer</h3>
    </div>
  </div>

</div>

<script>
// Dapatkan modalnya
var modal = document.getElementById("myModal");

// Dapatkan button yang membuka modal
var btn = document.getElementById("myBtn");

// Dapatkan elemen <span> yang menutup modal
var span = document.getElementsByClassName("close")[0];

// Ketika  mengklik button, maka modal akan terbuka
btn.onclick = function() {
  modal.style.display = "block";
}

// Saat pengguna mengklik <span> (x), tutup modal
span.onclick = function() {
  modal.style.display = "none";
}

// Saat  mengklik di mana saja di luar modal, maka tutuplah
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}
</script>

</body>
</html>

Cara Menambahkan header dan footer

Tambahkan class untuk modal-header, modal-body dan modal-footer:
Contoh

<!-- Modal content -->
<div class="modal-content">
  <div class="modal-header">
    <span class="close">&times;</span>
    <h2>Modal Header</h2>
  </div>
  <div class="modal-body">
    <p>Some text in the Modal Body</p>
    <p>Some other text...</p>
  </div>
  <div class="modal-footer">
    <h3>Modal Footer</h3>
  </div>
</div>

Style pada modal header, body dan footer, dan tambahkan animasi (slide dalam modal):

Contoh

/* Modal Header */
.modal-header {
  padding: 2px 16px;
  background-color: #5cb85c;
  color: white;
}

/* Modal Body */
.modal-body {padding: 2px 16px;}

/* Modal Footer */
.modal-footer {
  padding: 2px 16px;
  background-color: #5cb85c;
  color: white;
}

/* Modal Content */
.modal-content {
  position: relative;
  background-color: #fefefe;
  margin: auto;
  padding: 0;
  border: 1px solid #888;
  width: 80%;
  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
  animation-name: animatetop;
  animation-duration: 0.4s
}

/* Tambahkan animasi */
@keyframes animatetop {
  from {top: -300px; opacity: 0}
  to {top: 0; opacity: 1}
}

Modal Box Bottom (“Bottom sheets”)

Contoh tentang cara membuat modal lebar penuh yang meluncur dari bawah:
Contoh

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}

/* The Modal (background) */
.modal {
  display: none; /* Disembunyikan secara default */
  position: fixed; /* Tetap di tempat */
  z-index: 1; /*tetap di atas */
  left: 0;
  top: 0;
  width: 100%; /* Lebar maksimum */
  height: 100%; /* tinggi maksimim */
  overflow: auto; /* Tambahkan scrolling jika butuh */
  background-color: rgb(0,0,0); /* Warna cadangan */
  background-color: rgba(0,0,0,0.4); /* Warna hitam degnan opacity */
  -webkit-animation-name: fadeIn; /* Fade in pada background */
  -webkit-animation-duration: 0.4s;
  animation-name: fadeIn;
  animation-duration: 0.4s
}

/* Modal Content */
.modal-content {
  position: fixed;
  bottom: 0;
  background-color: #fefefe;
  width: 100%;
  -webkit-animation-name: slideIn;
  -webkit-animation-duration: 0.4s;
  animation-name: slideIn;
  animation-duration: 0.4s
}

/* The Close Button */
.close {
  color: white;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
}

.modal-header {
  padding: 2px 16px;
  background-color: #5cb85c;
  color: white;
}

.modal-body {padding: 2px 16px;}

.modal-footer {
  padding: 2px 16px;
  background-color: #5cb85c;
  color: white;
}

/* Tambahkan animasi */
@-webkit-keyframes slideIn {
  from {bottom: -300px; opacity: 0} 
  to {bottom: 0; opacity: 1}
}

@keyframes slideIn {
  from {bottom: -300px; opacity: 0}
  to {bottom: 0; opacity: 1}
}

@-webkit-keyframes fadeIn {
  from {opacity: 0} 
  to {opacity: 1}
}

@keyframes fadeIn {
  from {opacity: 0} 
  to {opacity: 1}
}
</style>
</head>
<body>

<h2>Bottom Modal</h2>

<!-- Trigger/Open The Modal -->
<button id="myBtn">Open Modal</button>

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <div class="modal-header">
      <span class="close">&times;</span>
      <h2>Modal Header</h2>
    </div>
    <div class="modal-body">
      <p>Sebuah text di tulis di modal-body</p>
      <p>Hallo Semua!</p>
    </div>
    <div class="modal-footer">
      <h3>Modal Footer</h3>
    </div>
  </div>

</div>

<script>
// Dapatkan modalnya
var modal = document.getElementById("myModal");

// Dapatkan button yang membuka modal
var btn = document.getElementById("myBtn");

// Dapatkan elemen <span> yang menutup modal
var span = document.getElementsByClassName("close")[0];

// Ketika mengklik button, maka buka modal 
btn.onclick = function() {
  modal.style.display = "block";
}

// Saat  mengklik <span> (x), tutup kembali modalnya
span.onclick = function() {
  modal.style.display = "none";
}

// Saat  mengklik di mana saja di luar modal, maka tutuplah modalnya
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}
</script>

</body>
</html>

You may also like