Created by Martin Angelov on May 26th, 2010
Earlier this week, while working on
ZineScripts‘ coupon code system, I found the need to be able to dynamically create and present a message box to Zine’s visitors. The usual routine would include digging through jQuery’s plugin repository and ending up with using a lightbox alternative, but I decided to take the time and build an one-off notification solution, which I am sharing with you today.
Step 1 – XHTML
Going straight to the point,
what do you need to create this effect?
The only thing you need is to create a div on your page and put some content inside it. Something like this:
2 | < p >< b >Title!b >Boring explanation.p > |
In our example the title of the message, the message body, and the warning icon are all created by using a single
tag with some CSS wizardry. The warning icon is its background, and the title is a regular bold tag contained inside the paragraph.
![BounceBox jQuery Plugin BounceBox jQuery Plugin](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_sHc--E96jmyR6OUK55B3mKpEdg1SjX9qWOa3beB3MgBSlVmz-50IeywNqYtivCew_2GQsllpAbPzJrMbsvsfZRh6BJWd-joYefrVD0CTUtTk0J7_geVLQ2t9eC-Q=s0-d)
BounceBox jQuery Plugin
Step 2 – CSS
The plugin, we are doing today, adds its own CSS rules for the box positioning, which make the bounce effect possible, but we still need to code the design of the box in our stylesheet file.
styles.css – Part 1
04 | background : url ( 'img/box_bg.jpg' ) repeat-x center top #fcfcfc ; |
10 | border : 1px solid #fcfcfc ; |
12 | text-shadow : 1px 1px 0 white ; |
13 | font-family : 'Myriad Pro' , Arial , Helvetica , sans-serif ; |
18 | background : url ( 'img/warning.png' ) no-repeat 10px center ; |
30 | -moz-border-radius: 10px ; |
31 | -webkit-border-radius: 10px ; |
Here we are styling the design of the
bounceBox. There are also a couple of rules that are applied inline by jQuery, which assign a
‘fixed’ positioning to the box and center it in the middle of the page, which is required for the animation. This way there is a clear division between the styles for design and those for functionality.
styles.css – Part 2
08 | text-shadow : 1px 1px 0 #145982 ; |
09 | font-family : 'Myriad Pro' , Arial , Helvetica , sans-serif ; |
14 | border : 1px solid #60b4e5 ; |
23 | background-color : #59aada ; |
24 | background-image : -moz-linear-gradient( #5eb2e2 , #4f9cca ); |
25 | background-image : -webkit-gradient(linear, 0% 0% , 0% 100% , from( #5eb2e2 ), to( #4f9cca )); |
31 | background-color : #5eb2e2 ; |
32 | background-image : -moz-linear-gradient( #6bbbe9 , #57a5d4 ); |
33 | background-image : -webkit-gradient(linear, 0% 0% , 0% 100% , from( #6bbbe9 ), to( #57a5d4 )); |
In the second part of the code we apply a number of CSS3 rules to the button to achieve that polished look. Notice the two
gradient rules which are targeted at Mozilla Firefox and the Webkit browsers (Safari & Chrome). Unfortunately, unlike with other CSS3 rules, they don’t share a common syntax for displaying a gradient, which raises the burden on the developer in some degree.
It is also important to specify a fallback background color in case the browser does not support CSS gradients.
![A Pure CSS3 Button - Gradients, Rounded Corners & Text Shadow A Pure CSS3 Button - Gradients, Rounded Corners & Text Shadow](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_tdNmadoXTobn8YUBDxDK2edPtQyrXxLsdvwNFdM_BNi7X89RsMWx5nqmh4fxGVFMC26I4wGSgR5dYFqyFfh4yCI1waTth3KDurrmNgHhUrNBKoPB6RiSjNu4GYsv4=s0-d)
A Pure CSS3 Button - Gradients, Rounded Corners & Text Shadow
Step 3 – jQuery
First lets start by creating our bounceBox plugin. As we’ve seen before, creating a jQuery plugin is just a matter of extending the
$.fn object with a new function. The
‘this’ of the new function is equivalent to the jQuery set of elements that the method was called on.
bouncebox-plugin/jquery.bouncebox.1.0.js
06 | $.fn.bounceBox = function (){ |
15 | top : - this .outerHeight(), |
16 | marginLeft : - this .outerWidth()/2, |
25 | $.fn.bounceBoxShow = function (){ |
29 | this .stop().animate({top:0},{easing: 'easeOutBounce' }); |
30 | this .data( 'bounceShown' , true ); |
35 | $.fn.bounceBoxHide = function (){ |
39 | this .stop().animate({top:- this .outerHeight()}); |
40 | this .data( 'bounceShown' , false ); |
45 | $.fn.bounceBoxToggle = function (){ |
52 | if ( this .data( 'bounceShown' )) |
We are defining four separate methods which convert the div to a bounceBox (and apply the positioning CSS rules), show it, hide it or toggle between the two by using the
animate() jQuery method.
For the toggling we are keeping an internal variable with the data method, which marks whether the box has been shown or hidden.
All of these methods are available to you after you include the jQuery library and the
jquery.bounce.1.0.js files to the page. For the neat bounce effect, you will need the
jQuery easing plugin as well, which is included in the plugin directory in the zip.
It is really easy to use the plugin, as you can see from the code below.
script.js
01 | $(document).ready( function (){ |
04 | $( '#box' ).bounceBox(); |
07 | $( 'a.button' ).click( function (e){ |
09 | $( '#box' ).bounceBoxToggle(); |
14 | $( '#box' ).click( function (){ |
15 | $( '#box' ).bounceBoxHide(); |
The code above is executed when the document ready event is fired so we are sure that all the page elements are available to jQuery. The first thing we then do is to covert the
#box div to a bounceBox, and bind listeners to the click event on the button and the box itself.
You can put whatever HTML code you want in the box div and it will be properly converted to a bounceBox. You can also have more than one bounce box on the page in the same time.
With this our BounceBox plugin is complete!
Conclusion
You can use this jQuery plugin to present notifications to the user in an eye-catching manner. You can easily put a registration form, newsletter signup or even some kind of advertisement as the content of the box div. Feel free to experiment and share what you’ve done in the comment section.
Postado por Fernando Schimit - Fox Creative