16 Sept 2023

Building a responsive modal box with HTML, CSS, and JavaScript

Modal boxes are a great way to display important information, notifications, or even to prompt users to take action. In this tutorial, we will walk through the process of building a responsive modal box with HTML, CSS, and JavaScript.

HTML Structure

To begin, we will start by creating the basic HTML structure for the modal box. We will use a div element with an id of “modal” to define the modal container. Inside the modal container, we will add a header, body, and footer section.

<div id="modal">
  <div class="modal-header">
    <h2>Modal Title</h2>
    <button class="close-btn">×</button>
  </div>
  <div class="modal-body">
    <p>Modal Content</p>
  </div>
  <div class="modal-footer">
    <button class="modal-btn">Button</button>
  </div>
</div>

CSS Styling

Next, we will add some CSS styling to our modal box. We will use the position property to set the modal box to be fixed and centered on the page. We will also add some padding and a background color to the modal container.

#modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 90%;
  max-width: 500px;
  padding: 20px;
  background-color: #fff;
  border-radius: 5px;
  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.3);
}

JavaScript Functionality

Now that we have our HTML structure and CSS styling in place, we will add some JavaScript functionality to show and hide the modal box.

We will start by creating a function to show the modal box when a button is clicked. We will use the classList property to add a “show-modal” class to the modal container, which will trigger the CSS transition to display the modal box.

const modal = document.getElementById("modal");
const modalBtn = document.querySelector(".modal-btn");
const closeBtn = document.querySelector(".close-btn");

function showModal() {
  modal.classList.add("show-modal");
}

Next, we will add an event listener to the modal button that will call the showModal() function when clicked.

modalBtn.addEventListener("click", showModal);

Finally, we will create a function to hide the modal box when the close button is clicked. We will use the classList property to remove the “show-modal” class from the modal container, which will trigger the CSS transition to hide the modal box.

function closeModal() {
  modal.classList.remove("show-modal");
}

We will then add an event listener to the close button that will call the closeModal() function when clicked.

closeBtn.addEventListener("click", closeModal);

Make it Responsive

To make our modal box responsive, we will use media queries to adjust the size and position of the modal container for different screen sizes.

@media screen and (max-width: 600px) {
  #modal {
    width: 90%;
    max-width: 300px;
  }
}

In the above example, we are using a media query to adjust the width and max-width properties of the modal container for screens with a maximum width of 600px.

Conclusion

In this tutorial, we have walked through the process of building a responsive modal box with HTML, CSS, and JavaScript. With just a few lines of code, we have created a functional and visually appealing modal box that can be used to display important information or prompt users to take action. By using media queries, we have also made our modal box responsive, ensuring that it looks and functions correctly on different screen sizes.

With this knowledge, you can now customize and enhance your modal box by adding more advanced functionality or styling. You can also use this as a starting point to create other types of pop-ups or modals to meet the needs of your project.

You may also like

Designing a Custom Pop-up Modal with HTML, CSS, and JavaScript

Learn how to create a custom pop-up modal using HTML, CSS, and JavaS...

Continue reading

Creating a responsive calculator with HTML, CSS, and JavaScript

Create a responsive calculator with HTML, CSS, and JavaScript: follo...

Continue reading

Creating a Responsive Timeline with HTML, CSS, and JavaScript

Create a responsive timeline with HTML, CSS, and JavaScript: display...

Continue reading