2012年9月20日星期四

JQuery模仿苹果桌面的Dock效果(初级版)

JQuery模仿苹果桌面的Dock效果(初级版)

新的一天新的开始,今天要分享的是用JQuery模仿苹果操作系统桌面的Dock效果,之所以称之为初级版,是因为其中还有一些bug,显示效果并不稳定。由于时间的关系,这些bug还没有修复,希望高手们不吝赐教,提出更好的意见,希望可以做出更好的版本分享给大家。

这是静态的效果图,好吧,看上去还想模像样

下面是HTML页面的代码:

View Code
 1 <!DOCTYPE html> 2 <html lang="zh-cmn-Hans-CN"> 3 <head> 4     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5     <title>jQuery EditTable</title> 6     <link type="text/css" rel="stylesheet" href="css/editTable.css" /> 7     <script type="text/javascript" src="js/jquery-1.8.0.js"></script> 8     <script type="text/javascript" src="js/editTable.js"></script> 9 </head>10 <body>11     <div id="topBody" align="center">12         <div id="topMenu">13             <a href="http://www.cnblogs.com//"><img alt="Home" src="images/home.png" /></a>14             <a href="http://www.cnblogs.com//"><img alt="Music" src="images/music.png" /></a>15             <a href="http://www.cnblogs.com//"><img alt="Calendar" src="images/calendar.png" /></a>16             <a href="http://www.cnblogs.com//"><img alt="Email" src="images/email.png" /></a>17             <a href="http://www.cnblogs.com//"><img alt="Portfolio" src="images/portfolio.png" /></a>18             <a href="http://www.cnblogs.com//"><img alt="Video" src="images/video.png" /></a>19             <a href="http://www.cnblogs.com//"><img alt="Link" src="images/link.png" /></a>20             <a href="http://www.cnblogs.com//"><img alt="History" src="images/history.png" /></a>21             <a href="http://www.cnblogs.com//"><img alt="RSS" src="images/rss.png" /></a>22         </div>23     </div>24 </body>25 </html>

没有CSS装饰的页面那叫一个惨不忍睹,所以使用适当的CSS进行装饰是必不可少的

View Code
 1 #topBody{ 2     height:70px; 3     width:550px; 4     margin-top:10px; 5     margin-left:300px; 6      7 } 8  9 #topMenu{10     background-image:url(../images/dock-bg.gif);11     height:60px;12     width: 450px;13     margin-top:5px;14     position: relative;15 }16 17 #topMenu a{18     text-decoration:none;19     width: 50px;20     height:60px;21     float: left;22 }23 24 #topMenu img{25     width: 50px;26     height:50px;27     margin-top:10px;28     border:none;29 }

才毕业几个月,解方程都忘记了,所以当鼠标移动时图标的放大算法让我很头疼啊,这里给出的算法只是个人想法,仅供参考,希望各位高手提出更好的算法。而且这里只考虑了鼠标在水平位置移动时的算法,还没有加入鼠标垂直移动式的算法。

View Code
 1 $(function(){     2     $("#topBody").mousemove(function(e){ 3         var mouseX = parseInt(e.pageX); 4         $("#topMenu img").each(function(){ 5             var obj = $(this); 6             var objWidth = obj.css("width"); 7             //获取图片中心水平坐标 8             var objX = parseInt(obj.offset().left) + parseInt(objWidth.substr(0,objWidth.length-2))/2; 9             var x = Math.abs(objX-mouseX);10             if(x<75 && x>-75){11                 obj.css("width",(128-((78*x*x)/(75*75)))+"px");12                 obj.css("height",(128-((78*x*x)/(75*75)))+"px");13             }14         });15     });16 });

说说JQuery获取鼠标的方法,当执行mousemove(function(e){})这个方法是,方法的参数e提供了e.pageX获取水平坐标、e.pageY获取垂直坐标,同时也可以使用var x = e.originalEvent.x || e.originalEvent.layerX || 0;获取鼠标的水平位置、同样可以用 var y = e.originalEvent.y || e.originalEvent.layerY || 0;获取鼠标的垂直位置。

当鼠标移动时图标是放大了,不过相应的bug也出来了。

恳请各位走过路过的高手、大神们,提出宝贵的修改意见及更好的算法。


TAG: