相思资源网 Design By www.200059.com
本文实例讲述了JS实现Fisheye效果动感放大菜单代码。分享给大家供大家参考,具体如下:
这款Fisheye Menu,是采用JS+CSS+XHTML实现的动感放大菜单,放到图标上的时候,图标会被放大,整个菜单有缓冲弹簧的效果,学jQuery的朋友见的比较多,不过本款没有用到jQuery,效果却同样精彩。
运行效果截图如下:
在线演示地址如下:
http://demo.jb51.net/js/2015/js-fisheye-style-menu-demo/
具体代码如下:
<!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" /> <title>Fisheye 动感放大的菜单</title> <style> #fisheye_menu { list-style: none; padding: 0; margin: 10px; height: 81px; } #fisheye_menu li { position: relative; display: block; float: left; } #fisheye_menu span { position: absolute; top: 100%; left: 0; text-align: center; width: 79px; padding: 1px; margin: 0; border: solid 1px #bbb; color: #333; background: #eee; } #fisheye_menu a { text-decoration: none; } #fisheye_menu img { border: 0; vertical-align: top; } </style> <script type='text/javascript'> var fisheyemenu = { startSize : 55, endSize : 88, imgType : ".gif", init : function () { var animElements = document.getElementById("fisheye_menu").getElementsByTagName("img"); var titleElements = document.getElementById("fisheye_menu").getElementsByTagName("span"); for(var j=0; j<titleElements.length; j++) { titleElements[j].style.display = 'none'; } for(var i=0; i<animElements.length; i++) { var y = animElements[i]; y.style.width = fisheyemenu.startSize+'px'; y.style.height = fisheyemenu.startSize+'px'; fisheyemenu.imgSmall(y); animElements[i].onmouseover = changeSize; animElements[i].onmouseout = restoreSize; } function changeSize() { fisheyemenu.imgLarge(this); var x = this.parentNode.getElementsByTagName("span"); x[0].style.display = 'block'; if (!this.currentWidth) this.currentWidth = fisheyemenu.startSize; fisheyemenu.resizeAnimation(this,this.currentWidth,fisheyemenu.endSize,15,10,0.333); } function restoreSize() { var x = this.parentNode.getElementsByTagName("span"); x[0].style.display = 'none'; if (!this.currentWidth) return; fisheyemenu.resizeAnimation(this,this.currentWidth,fisheyemenu.startSize,15,10,0.5); fisheyemenu.imgSmall(this); } }, resizeAnimation : function (elem,startWidth,endWidth,steps,intervals,powr) { if (elem.widthChangeMemInt) window.clearInterval(elem.widthChangeMemInt); var actStep = 0; elem.widthChangeMemInt = window.setInterval( function() { elem.currentWidth = fisheyemenu.easeInOut(startWidth,endWidth,steps,actStep,powr); elem.style.width = elem.currentWidth+"px"; elem.style.height = elem.currentWidth+"px"; actStep++; if (actStep > steps) window.clearInterval(elem.widthChangeMemInt); } ,intervals) }, easeInOut : function (minValue,maxValue,totalSteps,actualStep,powr) { var delta = maxValue - minValue; var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta); return Math.ceil(stepp) }, imgSmall : function (obj) { imgSrc = obj.getAttribute("src"); var typePos = imgSrc.indexOf(fisheyemenu.imgType, 0); var imgName = imgSrc.substr(0, typePos); obj.setAttribute("src", imgName+"_small"+fisheyemenu.imgType); }, imgLarge : function (obj) { imgSrc = obj.getAttribute("src"); var typePos = imgSrc.indexOf("_small", 0); var imgName = imgSrc.substr(0, typePos); obj.setAttribute("src", imgName+fisheyemenu.imgType); } } if ( typeof window.addEventListener != "undefined" ) window.addEventListener( "load", fisheyemenu.init, false ); else if ( typeof window.attachEvent != "undefined" ) window.attachEvent( "onload", fisheyemenu.init ); else { if ( window.onload != null ) { var oldOnload = window.onload; window.onload = function ( e ) { oldOnload( e ); fisheyemenu.init(); }; } else window.onload = fisheyemenu.init; } </script> </head> <body> <div> <ul id="fisheye_menu"> <li><a href="#1"><img src="/UploadFiles/2021-04-02/icon.gif">希望本文所述对大家JavaScript程序设计有所帮助。
相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com
暂无JS实现Fisheye效果动感放大菜单代码的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。