Responsive Popup Modal Using HTML CSS and JavaScript

Responsive Popup Modal is a responsive, elegant, mobile-friendly popup with CSS3-supported animations.

How to make use of it:

1. HTML for modal popups.

<div class="modal__container" id="modal-container">
  <div class="modal__content">
    <div class="modal__close close-modal" title="Close">
      <!-- Replace The Close Button -->
      <i class='bx bx-x'></i>
    <!-- Modal Image -->
    <img src="assets/img/star-trophy.png" alt="" class="modal__img">
    <!-- Modal Content -->
    <h1 class="modal__title">Good Job!</h1>
    <p class="modal__description">Click the button to close</p>
    <!-- Action Button -->
    <button class="modal__button modal__button-width">
      View status
    <!-- Close Button -->
    <button class="modal__button-link close-modal">

2. Create a button to toggle the modal popup.

<button class="modal__button" id="open-modal">
  Open Modal

3. Necessary CSS styles for modal popups.

/*=============== VARIABLES CSS ===============*/
:root {
  /*========== Colors ==========*/
  --hue: 240;
  --first-color: hsl(var(--hue), 16%, 18%);
  --first-color-alt: hsl(var(--hue), 16%, 12%);
  --title-color: hsl(var(--hue), 8%, 15%);
  --text-color: hsl(var(--hue), 8%, 35%);
  --body-color: hsl(var(--hue), 100%, 99%);
  --container-color: #FFF;
  /*========== Font and typography ==========*/
  --big-font-size: 1.5rem;
  /*========== z index ==========*/
  --z-modal: 1000;

  margin-left: 1rem;
  margin-right: 1rem;

  height: 100vh;
  display: grid;
  place-items: center;

  display: inline-block;
  background-color: var(--first-color);
  color: #FFF;
  padding: 1rem 1.25rem;
  border-radius: .5rem;
  transition: .3s;

  background-color: var(--first-color-alt);

  position: absolute;
  top: 0;
  left: 0;
  background-color: hsla(var(--hue), 18%, 75%, .8);
  width: 100%;
  height: 100%;
  display: grid;
  align-items: flex-end;
  overflow: hidden;
  transition: all .3s;
  z-index: var(--z-modal);
  visibility: hidden;
  opacity: 0;

  /*=== Effect 3 ===*/
  /* perspective: 1000px; */

  position: relative;
  background-color: var(--container-color);
  text-align: center;
  padding: 3rem 2rem 2rem;
  border-radius: 1rem 1rem 0 0;
  transition: all .3s;

  /*=== Effect 1 ===*/
  transform: translateY(10%);

  /*=== Effect 2 ===*/
  /* transform: scale(.5) translateY(10%); */

  /*=== Effect 3 ===*/
  /* transform: rotateX(65deg) scale(.75) translateY(10%);
  transform-origin: 50% 100%; */

  width: 150px;
  margin-bottom: .75rem;

  display: inline-flex;
  background-color: var(--first-color);
  border-radius: .25rem;
  color: #FFF;
  font-size: 1.5rem;
  position: absolute;
  top: 2rem;
  right: 2rem;
  cursor: pointer;

  font-size: var(--big-font-size);
  color: var(--title-color);
  font-weight: 500;

  margin-bottom: 1.5rem;

  width: 90%;

  display: block;
  margin: 1rem auto 0;
  background-color: transparent;
  color: var(--first-color);
  font-weight: 500;

/* Show modal */
  visibility: visible;
  opacity: 1;

.show-modal .modal__content{
  /*=== Effect 1 ===*/
  transform: translateY(0);

  /*=== Effect 2 ===*/
  /* transform: scale(1) translateY(0); */

  /*=== Effect 3 ===*/
  /* transform: rotateX(0) scale(1) translateY(0); */

/*=============== BREAKPOINTS ===============*/
/* For small devices */
@media screen and (min-width: 576px){
    margin: auto;
    width: 380px;
    border-radius: 1.25rem;

    width: 170px;

4. Use the following JS to open and close the modal popup.

/*=============== SHOW MODAL ===============*/
const showModal = (openButton, modalContent) =>{
    const openBtn = document.getElementById(openButton),
    modalContainer = document.getElementById(modalContent)
    if(openBtn && modalContainer){
        openBtn.addEventListener('click', ()=>{
/*=============== CLOSE MODAL ===============*/
const closeBtn = document.querySelectorAll('.close-modal')
function closeModal(){
    const modalContainer = document.getElementById('modal-container')
closeBtn.forEach(c => c.addEventListener('click', closeModal))

See Demo And Download


Official Website(bedimcode): Click Here

This superior jQuery/javascript plugin is developed by bedimcode. For extra Advanced Usages, please go to the official website.

Related Posts


CSS Layout Components Horizontal/Vertical Stack | HStack and VStack

HStack and VStack in CSS – CSS layout components that (basically) stack anything horizontally and vertically. A pure CSS library that makes it easy to stack elements…


How to Add Floating Whatsapp Chat Button In HTML | venom-button

Venom Button is a very simple plugin for the jQuery floating WhatsApp button. Adds a floating button to your site that calls WhatsApp Click to Chat API. It will automatically start the WhatsApp…


Interactive Data Table Generator with JS/jQuery and JSON | Tabulator

Tabulator allows you to create interactive tables in seconds from any HTML Table, JavaScript array, AJAX data source, or JSON format data. Just include the library in your…


Simple Alert, Confirm, Prompt Popup Using Vanilla JavaScript Library | attention.js

JavaScript provides various built-in functionality to display popup messages for different purposes. Attention JS is a vanillaJS plugin used to create a custom alert, confirm, or Prompt…


Bootstrap 4 Sidebar Menu Responsive Template | MDB

Bootstrap Side Navbar – Responsive sidebar template based on the Bootstrap 4 framework. An easy-to-use, totally responsive, Google Material Design impressed aspect navigation for modern web app…


Lightweight Bootstrap 4 Toast Notification Plugin | BS4 Advanced Toast

A lightweight Bootstrap 4 Toast Notification plugin integrated with JS/jQuery. bs4-toast.js is a JavaScript library that enhances the native Bootstrap toast component with icons, buttons, callbacks, and…

Leave a Reply

Your email address will not be published. Required fields are marked *