Introduction
In this tutorial, I'm going to share how to create a simple modal window with jQuery. I like jQuery, it makes everything so simple and so easy. In case you don't know what's modal window. You can click here. That's an example of a modal window.
Right, let's start, this example will show you how to create a modal window that will display the content of a DIV #ID.
My objectives are:
- Able to search the whole html document for A tag NAME="modal" attribute, so when users click on it, it will display the content of DIV #ID in the HREF attribute in Modal Window.
- A mask that will fill the whole screen.
- Modal windows that is simple and easy to modify.
1. HTML code and A tag attributes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <!-- #dialog is the id of a DIV defined in the code below --><a href="#dialog" name="modal">Simple Modal Window</a><div id="boxes"> <!-- #customize your modal window here --> <div id="dialog" class="window"> <b>Testing of Modal Window</b> | <!-- close button is defined as close class --> <a href="#" class="close">Close it</a> </div> <!-- Do not remove div#mask, because you'll need it to fill the whole screen --> <div id="mask"></div></div> |
2. CSS code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <style>/* Z-index of #mask must lower than #boxes .window */#mask { position:absolute; z-index:9000; background-color:#000; display:none;} #boxes .window { position:fixed; width:440px; height:200px; display:none; z-index:9999; padding:20px;}/* Customize your modal window here, you can add background image too */#boxes #dialog { width:375px; height:203px;}</style> |
3. Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| <script>$(document).ready(function() { //select all the a tag with name equal to modal $('a[name=modal]').click(function(e) { //Cancel the link behavior e.preventDefault(); //Get the A tag var id = $(this).attr('href'); //Get the screen height and width var maskHeight = $(document).height(); var maskWidth = $(window).width(); //Set height and width to mask to fill up the whole screen $('#mask').css({'width':maskWidth,'height':maskHeight}); //transition effect $('#mask').fadeIn(1000); $('#mask').fadeTo("slow",0.8); //Get the window height and width var winH = $(window).height(); var winW = $(window).width(); //Set the popup window to center $(id).css('top', winH/2-$(id).height()/2); $(id).css('left', winW/2-$(id).width()/2); //transition effect $(id).fadeIn(2000); }); //if close button is clicked $('.window .close').click(function (e) { //Cancel the link behavior e.preventDefault(); $('#mask, .window').hide(); }); //if mask is clicked $('#mask').click(function () { $(this).hide(); $('.window').hide(); }); });</script> |
It's very straight forward and easy to understand. Remember, you need to include jQuery framework.
4. Launch modal window with Javascript
Due to popular demand :), I have an example for it. The concept is simple. I wrapped the modal window script inside a function, and then you will able to call the modal window using javascript function call.
Yes, you will able to load the modal window on page load as well :)
1
2
3
4
| $(document).ready(function () { //id is the ID for the DIV you want to display it as modal window launchWindow(id); }); |
And, if you want to close the modal window on key press, any keys you want, you can add the following function.
1
2
3
4
5
6
| $(document).keyup(function(e) { if(e.keyCode == 13) { $('#mask').hide(); $('.window').hide(); }}); |
Use Cookie on First Load
Another popular demand from readers and this is how you do it. You need two functions (createCookie and readCookie) from this post about web cookies
1
2
3
4
5
6
7
8
9
10
| $(document).ready(function() {//if the cookie hasLaunch is not set, then show the modal windowif (!readCookie('hasLaunch')) { //launch it launchWindow('#dialog1'); //then set the cookie, so next time the modal won't be displaying again. createCookie('hasLaunch', 1, 365);}}); |
Recalculate the Position of Modal window and mask on window resize
Don't know how I missed it, this is the code that reposition the modal window and recalculate the dimension of mask if user resized the windows.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| $(document).ready(function () {$(window).resize(function () { var box = $('#boxes .window'); //Get the screen height and width var maskHeight = $(document).height(); var maskWidth = $(window).width(); //Set height and width to mask to fill up the whole screen $('#mask').css({'width':maskWidth,'height':maskHeight}); //Get the window height and width var winH = $(window).height(); var winW = $(window).width(); //Set the popup window to center box.css('top', winH/2 - box.height()/2); box.css('left', winW/2 - box.width()/2); });}); |
5. Conclusion
Yes, that's all you need to make a simple jquery modal window. In this tutorial, it shown you the concept of how to display DIV content inside a modal window. However, you can further develop it to accept a link and display it in an iFrame and image gallery.
*(Reference : queness)
No comments:
Post a Comment