Create a modal window in jQuery and CSS3
Using the classic "alert" or "confirm" are not deprecated but are not just attractive anymore. Web 2.0 brought us a new way to make websites and messages more attractive to the user.
In response to this, here's a quick way to make all your modal windows as pretty as possible using jQuery and CSS3.
HTML Code
<span class="modal info" title="Some information">info</span> <br /> <span class="modal confirm" title="Are you sure you want to delete this record?">confirm</span> <div id="modalWrapper"></div> <div id="modalBox"> <div class="modalContent"> <div id="modalMessage"></div> <div id="modalAction"> <span class="button" id="buttonSubmit">Yes</span> <span class="button" id="buttonCancel">No</span> <span class="button" id="buttonClose">Close</span> </div> </div> </div>
CSS Code
#modalWrapper { width:100%; height:100%; background:#B2AF9E; position:absolute; top:0; left:0; z-index:3000; display:none; filter:alpha(opacity=80); -moz-opacity:0.8; -khtml-opacity: 0.8; opacity: 0.8; } #modalBox { width:500px; background:#E7E3DA; position:absolute; z-index:5000; display:none; -webkit-box-shadow: 4px 4px 10px #422A20; -moz-box-shadow: 4px 4px 10px #422A20; -moz-border-radius: 10px; -webkit-border-radius: 10px; } #modalBox .modalContent { text-align:left; padding:10px; margin:10px; color:#333; font: normal 12px Tahoma; } #modalBox #modalAction { text-align:center; } #modalBox #modalMessage { display: block; margin: 5px 0 25px 0; clear: both; } span.button { width:60px; background-color: #422A20; color: #fff; margin: 0 10px; padding: 5px 15px; text-align:center; text-decoration: none; font: bold 12px Tahoma; cursor: pointer; -moz-border-radius: 6px; -webkit-border-radius:6px; text-shadow: 0 1px 1px #000; -moz-box-shadow: 0 1px 3px #000; -webkit-box-shadow: 0 1px 3px #000); } span.button:hover { background: #EC7517; } span#buttonCancel { background: #BE9E84; } span#buttonCancel:hover { background: #aaa; }
JavaScript Code
$(document).ready(function () { $('#buttonClose, #modalWrapper, #buttonCancel').click(function () { $('#modalWrapper, #modalBox').fadeOut('fast'); return false; }); $('#buttonSubmit').click(function() { alert('You clicked "Yes"'); $('#modalWrapper, #modalBox').fadeOut('fast'); return false; }); $('.modal').click(function() { popup($(this)); }); }); function popup(element) { var type = 'info'; var message = element.attr('title'); if(element.hasClass('confirm')) { $('#buttonSubmit').show(); $('#buttonCancel').show(); $('#buttonClose').hide(); } else { $('#buttonSubmit').hide(); $('#buttonCancel').hide(); $('#buttonClose').show(); } var maskHeight = $(document).height(); var maskWidth = $(window).width(); var modalTop = (maskHeight/3) - ($('#modalBox').height()); var modalLeft = (maskWidth/2) - ($('#modalBox').width()/2); $('#modalWrapper').css({ 'height':maskHeight + 'px', 'width':maskWidth + 'px' }).fadeIn(200, function() { $('#modalMessage').html(message); $('#modalBox').css({ 'top':modalTop + 'px', 'left':modalLeft + 'px' }).fadeIn(100); }); }
Now you have an elegant way to show messages or confirmation dialog to the user.