用javascript來(lái)實(shí)現(xiàn)動(dòng)畫導(dǎo)航效果的代碼
誰(shuí)在用這些導(dǎo)航
google是個(gè)大公司,全世界都有g(shù)oogle的腳印,韓國(guó)的google動(dòng)畫效果非常不錯(cuò),藍(lán)色理想論壇里已經(jīng)有人挖過(guò)來(lái)了,可惜js寫的太多了,那自己寫一個(gè)吧?好,就這么干!
原理
小時(shí)候,總喜歡看動(dòng)畫片吧,動(dòng)畫片是怎樣實(shí)現(xiàn)的呢?記得媽媽說(shuō)是一張畫一張畫切換過(guò)去(啊?那一部葫蘆兄弟要畫多少副畫啊? -_-! ),其實(shí)我們現(xiàn)在做的也是這樣,用一個(gè)圖片,這個(gè)圖片里有很多個(gè)小圖,來(lái)顯示動(dòng)畫軌跡.按時(shí)間來(lái)移動(dòng)圖片,那圖片不是會(huì)動(dòng)了啊?(不知道,表達(dá)清楚了沒…語(yǔ)文很重要啊!!)
準(zhǔn)備
我們需要一張圖片,一個(gè)大腦,一張會(huì)笑的臉(不笑效果就出不來(lái)了….)!!下面是我準(zhǔn)備的圖片(ps水平有限^_^)…
代碼
我們看到上面的圖片,想象下,它動(dòng)起來(lái)是多么的優(yōu)美啊…
css
.Gnb_btn_div{
width:90px;
height:75px;
overflow:hidden;
display:block;
position:absolute;
}
.Gnb_btn_img{
width:100%;
height:525px;
display:block;
overflow:hidden;
text-indent:-500px;
}
#gnb_btn_01 .Gnb_btn_img {
background-image:url(http://www.wler.cn/blog/img/friend.gif)
}
javascript
<script type="text/javascript">
// <![CDATA[
function GNB(_7c){
//初始化一些參數(shù)
this.iImgNum=7; //小圖片個(gè)數(shù)
this.iImgHeight=75; //小圖片高度
this.iOverSpeed=50; //鼠標(biāo)經(jīng)過(guò)時(shí)候切換的時(shí)間
this.iOutSpeed=50; //鼠標(biāo)離開時(shí)候切換的時(shí)間
this.eventObj=_7c; //取得圖片對(duì)象
this.MouseOverFlag=false;
this.imageIndex=0;
if(this.eventObj==null){return;}
this.eventObj.parentClass=this;this.eventAssign();
}
GNB.prototype.eventAssign=function(){//注冊(cè)事件
this.eventObj.onmouseover=this.menuMouseOver;
this.eventObj.onmouseout=this.menuMouseOut;
};
GNB.prototype.menuMouseOver=function(){//鼠標(biāo)經(jīng)過(guò)
if(this.parentClass.MouseOverFlag!=false){return;}
this.parentClass.MouseOverFlag=true;
this.parentClass.clearTimeOut();
this.parentClass.menuMouseOverTimer();
};
GNB.prototype.menuMouseOut=function(){//鼠標(biāo)離開
this.parentClass.MouseOverFlag=false;
this.parentClass.clearTimeOut();
this.parentClass.menuMouseOutTimer();
};
GNB.prototype.menuMouseOverTimer=function(){//經(jīng)過(guò)圖片位置遞增
var _7d=this;
if(this.imageIndex>=this.iImgNum){return;}
this.eventObj.scrollTop=this.imageIndex*this.iImgHeight;
this.imageIndex++;
this.setTimerID=setTimeout(function(){_7d.menuMouseOverTimer();},this.iOverSpeed);
};
GNB.prototype.menuMouseOutTimer=function(){////經(jīng)過(guò)圖片位置遞減
var _7e=this;if(this.imageIndex<0){return;}
this.eventObj.scrollTop=this.imageIndex*this.iImgHeight;
this.imageIndex--;
this.setTimerID=setTimeout(function(){_7e.menuMouseOutTimer();},this.iOutSpeed);
};
GNB.prototype.clearTimeOut=function(){//取消定時(shí)
clearTimeout(this.setTimerID);
};
// ]]>
</script>
xhtml
<div class="Gnb_btn_div" id="gnb_btn_01">
<a class="Gnb_btn_img" href="#1" href="#1">找朋友</a>
</div>
<script type="text/javascript">
// <![CDATA[
var GNB1=new GNB(document.getElementById("gnb_btn_01"));//實(shí)例單個(gè)按鈕,當(dāng)然也可以多個(gè)
// ]]>
</script>
演示地址
- javascript 樹形導(dǎo)航菜單實(shí)例代碼
- JavaScript NodeTree導(dǎo)航欄(菜單項(xiàng)JSON類型/自制)
- javascript實(shí)現(xiàn)的鼠標(biāo)懸停時(shí)動(dòng)態(tài)翻滾的導(dǎo)航條
- javascript實(shí)現(xiàn)的又一個(gè)不錯(cuò)的滑動(dòng)導(dǎo)航效果
- js實(shí)現(xiàn)多選項(xiàng)切換導(dǎo)航菜單的方法
- 一個(gè)js控制的導(dǎo)航菜單實(shí)例代碼
- js左側(cè)三級(jí)菜單導(dǎo)航實(shí)例代碼
- JavaScript實(shí)現(xiàn)簡(jiǎn)單的二級(jí)導(dǎo)航菜單實(shí)例
相關(guān)文章
解決layui的使用以及針對(duì)select、radio等表單組件不顯示的問(wèn)題
今天小編就為大家分享一篇解決layui的使用以及針對(duì)select、radio等表單組件不顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09一個(gè)JavaScript處理textarea中的字符成每一行實(shí)例
這篇文章主要與大家分享一個(gè)JavaScript處理textarea中的字符成每一行實(shí)例,很簡(jiǎn)單,但很實(shí)用,大家可以看看2014-09-09TypeScript函數(shù)和類型斷言實(shí)例詳解
在某些情況下,我們會(huì)比TS更清楚一個(gè)數(shù)據(jù)的類型,這種時(shí)候我們就可以使用斷言來(lái)告訴TS相信我,我知道自己在干什么,下面這篇文章主要給大家介紹了關(guān)于TypeScript函數(shù)和類型斷言的相關(guān)資料,需要的朋友可以參考下2022-06-06jQuery EasyUI window窗口使用實(shí)例代碼
本文通過(guò)實(shí)例代碼給大家介紹了jQuery EasyUI window窗口使用功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12JavaScript高級(jí)程序設(shè)計(jì)閱讀筆記(六) ECMAScript中的運(yùn)算符(二)
ECMAScript中的運(yùn)算符,學(xué)習(xí)js的朋友可以參考下2012-02-02