:modal
        
        
          
                Baseline
                
                  Widely available
                
                
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.
The :modal CSS pseudo-class matches an element that is in a state in which it excludes all interaction with elements outside it until the interaction has been dismissed. Multiple elements can be selected by the :modal pseudo-class at the same time, but only one of them will be active and able to receive input.
Try it
button {
  display: block;
  margin: auto;
  width: 10rem;
  height: 2rem;
}
:modal {
  background-color: beige;
  border: 2px solid burlywood;
  border-radius: 5px;
}
p {
  color: black;
}
<p>Would you like to see a new random number?</p>
<button id="showNumber">Show me</button>
<dialog id="favDialog">
  <form method="dialog">
    <p>Lucky number is: <strong id="number"></strong></p>
    <button>Close dialog</button>
  </form>
</dialog>
const showNumber = document.getElementById("showNumber");
const favDialog = document.getElementById("favDialog");
const number = document.getElementById("number");
showNumber.addEventListener("click", () => {
  number.innerText = Math.floor(Math.random() * 1000);
  favDialog.showModal();
});
Syntax
:modal {
  /* ... */
}
Usage notes
Examples of elements that will prevent user interaction with the rest of the page and will be selected by the :modal pseudo-class include:
- The dialogelement opened with theshowModal()API.
- The element selected by the :fullscreenpseudo-class when opened with therequestFullscreen()API.
Examples
>Styling a modal dialog
This example styles a modal dialog that opens when the "Update details" button is activated. This example has been built on top of the <dialog> element example.
CSS
:modal {
  border: 5px solid red;
  background-color: yellow;
  box-shadow: 3px 3px 10px rgb(0 0 0 / 50%);
}
Result
Specifications
| Specification | 
|---|
| HTML> # selector-modal> | 
| Selectors Level 4> # selectordef-modal> | 
Browser compatibility
Loading…
See also
- dialogelement
- Other element display state pseudo-classes: :fullscreenand:picture-in-picture
- Complete list of pseudo-classes