Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/drublic/css-modal
A modal built with pure CSS, enhanced with JavaScript
https://github.com/drublic/css-modal
css css-modal plugin sass
Last synced: 4 days ago
JSON representation
A modal built with pure CSS, enhanced with JavaScript
- Host: GitHub
- URL: https://github.com/drublic/css-modal
- Owner: drublic
- License: mit
- Created: 2012-11-22T23:09:26.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2022-12-03T13:38:12.000Z (about 2 years ago)
- Last Synced: 2025-01-10T02:05:28.048Z (11 days ago)
- Topics: css, css-modal, plugin, sass
- Language: JavaScript
- Homepage: https://drublic.github.io/css-modal
- Size: 3.34 MB
- Stars: 1,815
- Watchers: 62
- Forks: 211
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-css-only - Css-modal - A modal built with pure CSS, enhanced with JavaScript. (Uncategorized / Uncategorized)
- awesome-javascript - css-modal - A modal built with pure CSS, enhanced with JavaScript - ★ 1736 (Modals and Popups)
README
# CSS Modals [![Build Status](https://secure.travis-ci.org/drublic/css-modal.png?branch=master)](http://travis-ci.org/drublic/css-modal)
Modals built out of pure CSS
Please [visit the website](http://drublic.github.io/css-modal) to read more
about this project and refer to the [FAQ](FAQ.md) in case of a question.## What is it
**Built with pure CSS:** CSS Modal is built out of pure CSS. JavaScript is only
for sugar. This makes them perfectly accessible.**Optimized for mobile:** The modals are designed using responsive web design
methods. They work on all screen sizes from a small mobile phone up to high
resolution screens.**Use as Sass plugin:** You can use CSS Modal as [Sass](http://sass-lang.com/)
plugin and apply it to your custom classes. No need to understand all the code.**A few other advantages:** Accessible, cross-browser, media-adaptive, small and
fast!## How to use
Please be aware that modals get stacked above each other if you open one modal
from within another. You can add a data-attribute `data-stackable="false"` to
the modal in order to make it non-stackable.### Markup
You need to include the markup and content for modals in your website. This has
a positive effect on SEO. The example code:```html
```
The `id` attribute is the one which identifies the modal. You can link to this
ID from everywhere.> Please note that the ID cannot include the `/` character since this one is
needed for identifying stacked modals.Using header and footer is optional. Just remove the tags if you don't want them
in a modal.You should leave the link's href attribute that way to close the modal in order
to prevent the page from scrolling to top when clicking on it.Please remember to set a unique ID for the header and change the
`aria-labelledby` attribute to the same value.You link to a modal by simply setting the ID to a link element's `href` like this:
```html
Modal
```If you want to decouple the modal call from the location's hash you need to add
`data-cssmodal-nohash` to the link.### JavaScript
As stated above you don't need JavaScript to get a good experience out of CSS
Modals. But there are some issues where JavaScript helps:* IE 8 compatibility (please include jQuery if you need full compatibility).
* Pressing escape: If you press ESC on your keyboard while the modal is visible
it closes itself. This behavior cannot be achieved with CSS only.
* Preventing background page from scrolling: If you scroll within the modal and
you reach the end you don't want the page in the background to scroll. To
prevent this JavaScript pushes a CSS class selector to the body element.
* Being accessible: To get the browser's focus to the modal and back after
closing.
* Firing events: When a modal opens a custom event is fired called
`cssmodal:show`. When the modal is hidden, an event called `cssmodal:hide` is
triggered.
* To add this behavior to your website, please include the JavaScript file
modal.js right before the closing body-tag:```html
```
## Browser Support
This modal is designed to work on all modern browsers. Unfortunately this does
not include Internet Explorer 7 or lower. But we deal with IE 8 – well,… at
least it works.On mobile Safari for iOS and Android 4+ it is tested pretty well, while Android
2.3 has some problems (biggest issue
[is scrolling](https://github.com/drublic/css-modal/issues/4)).
It's also working on Windows Phone 8.In numbers:
* Chrome
* Firefox
* Safari 6.x
* Opera 12+
* Internet Explorer 8 (functional, include jQuery if you want support for
events)
* Internet Explorer 9+
* iOS 6
* Android 2.3 (functional)
* Android 4.x
* Windows Phone 8## Media
Please be aware that you need to stop playing videos or audio manually after
hiding the modal. We have [a plugin](plugins/html5video.js) for this though.## Events
There is an event `cssmodal:show` fired on the modal itself after the modal is
shown. Another event `cssmodal:hide` is fired after the modal is hidden.You can use the events by subscribing to them as if they were click events or
something. Here is an example using jQuery:```js
$(document).on('cssmodal:show', function (event) {
console.log(event);
});
```There events are not fired in IE8. Please be aware of that and use jQuery or
something else to create custom events.## Plugins
We have a couple for the modal to enhance it:
* Resize - Resizes modal to size of input elements
* Gallery - A lightbox plugin (in connection with resize)
* HTML5 Video - Load videos within the modal
* Maximum Width - Set a custom maximum width on a per-modal basis## Bug reports and feature requests
If you got something that's worth including into the project please
[open an issue](https://github.com/drublic/css-modal/issues) for further
discussion.Please see the [section on contributing](http://drublic.github.io/css-modal/#contributing)
on the website.## Contributors
This is a project by [Hans Christian Reinl](http://drublic.de). Thanks goes out
to [all other contributors](https://github.com/drublic/css-modal/contributors).