Mega Code Archive

 
Categories / JavaScript DHTML / Mootools
 

Use the custom mouseenter and mouseleave events

<!-- MooTools is released under the Open Source MIT license,  which gives you the possibility to use it and modify  it in every circumstance.  --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head>   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <style type="text/css"> div.floated {   width: 400px;   float: left;   margin-left: 1em; } div#myElement {   width: 100px;   height: 100px;   border: 1px solid black;   background-color: #f9f9f9;   float: left; } div#myOtherElement {   width: 200px;   height: 20px;   overflow: hidden;   border: 1px solid black;   background-color: #f9f9f9; } div#myOtherElement span, div#myOtherElement a {   display: block;   padding: 0 3px; } div#myOtherElement a:hover {   background: #f5f5f5; }     </style>   <script type="text/javascript" src="mootools.js"></script>   <script type="text/javascript"> window.addEvent('domready', function(){   //First Example   var el = $('myElement'),     color = el.getStyle('backgroundColor');      // We are setting the opacity of the element to 0.5 and adding two events   $('myElement').set('opacity', 0.5).addEvents({     mouseenter: function(){       // This morphes the opacity and backgroundColor       this.morph({         'opacity': 1,         'background-color': '#c6d880'       });     },     mouseleave: function(){       // Morphes back to the original style       this.morph({         opacity: 0.5,         backgroundColor: color       });     }   });   // Second Example      // The same as before: adding events   $('myOtherElement').addEvents({     'mouseenter': function(){       // Always sets the duration of the tween to 1000 ms and a bouncing transition       // And then tweens the height of the element       this.set('tween', {         duration: 1000,         transition: Fx.Transitions.Bounce.easeOut // This could have been also 'bounce:out'       }).tween('height', '150px');     },     'mouseleave': function(){       // Resets the tween and changes the element back to its original size       this.set('tween', {}).tween('height', '20px');     }   }); });        </script>   <title>Mouseenter Demo</title> </head> <body>   <h1>Mouseenter/Mouseleave</h1>   <h2>Introduction</h2>   <p>     This demo shows how to use the custom mouseenter and mouseleave events. Just hover     the grey box below.   </p>   <div id="myElement">   </div>   <div class="help floated">     <strong>Why?</strong> MooTools features mouseenter and mouseleave because mouseover/mouseout sometimes     just does not work as expected. Mouseenter only fires once you enter the element and     does not fire again if your mouse crosses over children of the element.   </div>   <div style="clear: both;">     <!-- space -->   </div>   <h2>Menu Example</h2>   <p>     This example explains how to open a menu-like element on mouseenter and     how it closes again on mouseleave.   </p>   <div id="myOtherElement">     <span><strong>Menu</strong></span>     <div>       <a href="#">Menuelement 1</a>       <a href="#">Menuelement 2</a>       <a href="#">Menuelement 3</a>     </div>   </div> </body> </html>