Teyro
CoursesFor creatorsBlog
Log inGet started
Tey Mascot
LOADING.

Every expert you admire was once a beginner who refused to quit.

Teyro

The fun way to finish learning coding and AI: short daily lessons with streaks, leagues and friends.

Get the app

Learn

  • All courses
  • Learn coding
  • Learn AI
  • Learn online
  • How it works
  • Leagues
  • Get the app

Creators

  • Teach on Teyro
  • How teaching works
  • Teach coding online
  • Teach AI online
  • Join as a Founding Creator
  • Creator log in

Resources

  • Blog
  • Features
  • Use cases
  • Compare
  • FAQ

Legal

  • Terms of Use
  • Privacy Policy

© 2026 Teyro · support@teyro.app

HomeBlogSkill Building & Careers
Skill Building & Careers

How to Build a Modal Window With HTML, CSS and JavaScript

Build an accessible modal dialog with HTML, CSS and JavaScript: open and close buttons, a backdrop, closing with Escape and focus basics.

The Teyro TeamOct 26, 20261 min read
On this page7 sections
  1. Direct answer
  2. Example
  3. Style the backdrop
  4. Accessibility checklist
  5. Where Teyro fits
  6. The bottom line
  7. More guides

Modals are common and easy to get wrong. The dialog element does most of the work for you.

Direct answer

Use the HTML <dialog> element. Call dialog.showModal() to open it and dialog.close() to close it. The browser provides the backdrop, traps focus and closes on Escape.

Example

<button id="open">Open</button>

<dialog id="modal">
  <h2>Hello</h2>
  <p>This is a modal.</p>
  <button id="close">Close</button>
</dialog>
const modal = document.querySelector("#modal");
document.querySelector("#open").addEventListener("click", () => modal.showModal());
document.querySelector("#close").addEventListener("click", () => modal.close());

Style the backdrop

dialog::backdrop {
  background: rgba(0, 0, 0, 0.5);
}

Accessibility checklist

  • Give the dialog a heading.
  • Make sure the first focusable element is sensible.
  • Return focus to the opener after closing.
  • Do not rely on colour alone.

Where Teyro fits

Teyro's Interactive Web Pages with JavaScript course turns this into short lessons you can play in a few minutes a day. It has 37 lessons, and you can start free.

The bottom line

Prefer the built-in dialog element before building your own.

More guides

  • How to Add a Dark Mode Toggle With CSS and JavaScript
  • JavaScript Animation Basics
  • Build a To-Do List App in JavaScript
  • Javascript event listeners
  • Interactive Web Pages with JavaScript course

Frequently asked questions

How do I make a modal in JavaScript?

Create a hidden dialog element, show it on a button click and add a close button and Escape key handling.

Can I use the HTML dialog element?

Yes. The dialog element has built-in methods showModal and close and handles focus and the backdrop.

How do I make a modal accessible?

Use a real dialog, label it, keep focus inside it, return focus when closed and allow Escape to close.

Learn it by playing

Interactive Web Pages with JavaScript turns this into short, playable lessons. Free to start.

See the Interactive Web Pages with JavaScript course

Free to start · No credit card needed

Share

Written by

The Teyro Team

Learning Team at Teyro

We build Teyro — an AI-powered learning platform that turns skill-building into a daily habit through bite-sized, gamified lessons. We write about the learning science and study strategies that shape our product.

More from The Teyro Team

On this page

  • Direct answer
  • Example
  • Style the backdrop
  • Accessibility checklist
  • Where Teyro fits
  • The bottom line
  • More guides

Keep reading

Skill Building & Careers

Best Careers for 2027: High-Demand Jobs and the Skills to Get Them

The best careers for 2027 and the jobs most in demand, based on BLS and World Economic Forum data, plus the skills each path needs.

Oct 30, 20263 min read
Skill Building & Careers

Best Certifications for 2027: Tech, Data, Cloud and Business

The best certifications for 2027 in cloud, security, data, project management and AI, who each one suits, and when a portfolio matters more.

Oct 30, 20263 min read
Skill Building & Careers

Best Programming Language to Learn in 2027 (for Your Goal)

The best programming language to learn in 2027 depends on what you want to build. Compare Python, JavaScript, TypeScript, SQL and C.

Oct 30, 20263 min read