Fully Accessible Modal Window Plugin With jQuery - modal-window.js
| File Size: | 7.71 KB |
|---|---|
| Views Total: | 1244 |
| Last Update: | |
| Publish Date: | |
| Official Website: | Go to website |
| License: | MIT |
modal-window.js is a lightweight jQuery plugin that helps you create a fully accessible modal window for keyboard and screen reader users. Based on WAI-ARIA role and state markup.
When the modal is displayed:
- Marks the main page as hidden using
aria-hidden= 'true'state. - Make the modal window visible using
aria-hidden= 'false'state. - Inserts an overlay to prevent clicking and make a visual change to indicate the main page is not available.
- Attaches a listener to redirect the tab to the modal window if the user somehow gets out of the modal window.
- Saves current focus.
When the modal is closed:
- Removes the overlay in order to make the main screen available again.
- Marks the modal window as hidden using
aria-hidden= 'true'state. - Mark the main page as visible using
aria-hidden= 'false'state. - Removes the listener which redirects tab keys in the main content area to the modal.
- Set focus back to element that had it before the modal was opened.
How to use it:
1. Include the latest version of jQuery library and the jQuery modal-window.js plugin on the webpage.
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script> <script src="modal-window.js"></script>
2. Add the aria-hidden="false" attribute to the main container.
<div id="mainPage" aria-hidden="false"> ... </div>
3. Add the WAI-ARIA role and state markup to your modal window as follows:
<div id="modal"
aria-hidden="true"
aria-labelledby="modalTitle"
aria-describedby="modalDescription"
role="dialog">
<div role="document">
<div id="modalDescription" class="screen-reader-offscreen">
Modal Description
</div>
<button id="modalCloseButton" class="modalCloseButton" title="Close">
<img id="cancel" src="x.png" alt="close the modal">
</button>
</div>
</div>
4. Create a background overlay for the modal window.
<div id="modalOverlay" tabindex="-1"></div>
5. Create a button to trigger the modal window.
<button id="startModal">Open</button>
6. Style the modal window in the CSS.
#modalOverlay {
width: 100%;
height: 100%;
z-index: 2; /* places the modal overlay between the main page and the modal dialog*/
background-color: #000;
opacity: 0.5;
position: fixed;
top: 0;
left: 0;
display: none;
margin: 0;
padding: 0;
}
#modal {
width: 50%;
margin-left: auto;
margin-right: auto;
padding: 20px;
border: 3px #fff solid;
background-color: #16A085;
color: #fff;
z-index: 3; /* places the modal dialog on top of everything else */
position: fixed;
top: 25%;
left: 25%;
display: none;
}
#modal h1 { text-align: center; }
.modalCloseButton {
float: right;
position: absolute;
top: 10px;
left: 92%;
height: 25px;
border: 0;
background-color: #16A085;
}
.modalCloseButton img { border: 0; }
.screen-reader-offscreen {
position: absolute;
left: -999px;
width: 1px;
height: 1px;
top: auto;
}
This awesome jQuery plugin is developed by gdkraus. For more Advanced Usages, please check the demo page or visit the official website.











