Skip to main content
/
/
/
Modal

Modal

React component

Basic modal

<dialog class="bf-modal"></dialog>
<dialog class="bf-modal"></dialog>

Styled

Apply styling for content, heading and close button:

<dialog class="bf-modal bf-scrollbar"> <button type="button" class="bf-modal-close" aria-label="Close modal"> <i class="fa-regular fa-xmark"></i> </button> <div class="bf-modal-content"> <header className="bf-modal-header">Modal title</header> Rest of modal content </div> </dialog>
<dialog class="bf-modal bf-scrollbar"> <button type="button" class="bf-modal-close" aria-label="Close modal"> <i class="fa-regular fa-xmark"></i> </button> <div class="bf-modal-content"> <header className="bf-modal-header">Modal title</header> Rest of modal content </div> </dialog>

Interactive demo

For <dialog> elements, the browser exposes .showModal() and .close() methods that can be used to open and close the modal.
ESC keypress will also close the dialog by default.

<button class="bf-button" id="openButton">Open modal</button> <dialog class="bf-modal bf-scrollbar" id="dialogElement"> <button type="button" class="bf-modal-close" id="closeButton" aria-label="Close modal" > <i class="fa-regular fa-xmark"></i> </button> <div class="bf-modal-content"> <header class="bf-modal-header">Modal title</header> Rest of modal content </div> </dialog> <script> const dialogElement = document.getElementById("dialogElement"); const openButton = document.getElementById("openButton"); const closeButton = document.getElementById("closeButton"); openButton.addEventListener("click", () => dialogElement.showModal()); closeButton.addEventListener("click", () => dialogElement.close()); // optional: close modal on dialog overlay click dialogElement.addEventListener("click", (e) => { if (e.target === dialogElement) dialogElement.close(); }); </script>
<button class="bf-button" id="openButton">Open modal</button> <dialog class="bf-modal bf-scrollbar" id="dialogElement"> <button type="button" class="bf-modal-close" id="closeButton" aria-label="Close modal" > <i class="fa-regular fa-xmark"></i> </button> <div class="bf-modal-content"> <header class="bf-modal-header">Modal title</header> Rest of modal content </div> </dialog> <script> const dialogElement = document.getElementById("dialogElement"); const openButton = document.getElementById("openButton"); const closeButton = document.getElementById("closeButton"); openButton.addEventListener("click", () => dialogElement.showModal()); closeButton.addEventListener("click", () => dialogElement.close()); // optional: close modal on dialog overlay click dialogElement.addEventListener("click", (e) => { if (e.target === dialogElement) dialogElement.close(); }); </script>