jQuery實現(xiàn)背景滑動菜單
話不多說,直接附上源碼,僅供大家參考
<div class="menu"> <ul id="menu"> <li><a href="#">JavaScript</a></li> <li value="1"><a href="#">Graphic Design</a></li> <li><a href="#">HTML</a></li> <li><a href="#">User Interface</a></li> <li><a href="#">CSS</a></li> </ul> <div id="slide"></div> </div>
* {margin:0; padding:0} body {font:14px Helvetica, sans-serif; font-weight:bold; background:#FFF} .menu {position:relative; background:url(images/bg.gif) no-repeat; height:35px; width:459px} .menu ul {list-style:none; z-index:10; position:absolute; z-index:100; padding:9px 5px} .menu li {float:left} .menu a, .menu a:active, .menu a:visited, .menu a:hover {text-decoration:none; color:#FFF; padding:10px} #slide {position:absolute; top:6px; height:24px; background:#89957a; z-index:10;}
(function($){ $.fn.extend({ bgslide:function(value){ //可選參數(shù) value=$.extend({ "fw":12, "sw":2, "ftime":100, "stime":300 },value); //初始化背景的位置 var liw = $("ul li:eq(0)",value.menu).width();//獲取第一個li的寬 var $slide = $(this).children("div"); $slide.css({"width":liw,"left":"5"}); //懸停時執(zhí)行動畫 function hani(w,l){ $slide.stop(true) //很關(guān)鍵的一句話,當(dāng)懸停時,讓正在執(zhí)行的動畫,和列隊中的動畫,都取消;防止鼠標(biāo)不?;瑒訒r的bug; .animate({"width":w,"left":l+value.fw},value.ftime) .animate({"left":l-value.fw},value.stime) .animate({"left":l+value.sw},value.stime) .animate({"left":l-value.sw},value.stime); } //離開時執(zhí)行動畫 function oani(){ $slide.stop(true) .animate({"width":liw,"left":"5"},value.ftime) .animate({"left":l-value.fw},value.stime) .animate({"left":l+value.sw},value.stime) .animate({"left":l-value.sw},value.stime);; } $("ul li",this).hover(function(){ var w = $(this).width(); //獲取當(dāng)前l(fā)i的寬 var l = $(this).position().left; //獲取當(dāng)前l(fā)i的橫坐標(biāo) if(!$(this).index()==0){ //鼠標(biāo)懸停在第一個LI時,不發(fā)生動畫 hani(w,l); } },function(){ oani(); }); } }) })(jQuery);
html結(jié)構(gòu)思路:
div:放置一個背景圖層,相對定位;
UL:放置菜單內(nèi)容,絕對定位;
div:放置滑動的背景層,絕對定位;
JQuery思路分析:
鼠標(biāo)懸停到每一個LI的時候,讓這個滑動的背景層,通過水平移動動畫,來定位到當(dāng)前這個LI的地方;并有一個左右晃動效果;鼠標(biāo)離開時,讓背景層滑動到初始位置;
鼠標(biāo)懸停時:
1.獲取當(dāng)前LI相對于最外層DIV的水平坐標(biāo),即橫坐標(biāo)值;
2.讓滑動的背景層的橫坐標(biāo)正好等于當(dāng)前LI的橫坐標(biāo);
3.執(zhí)行一個左右晃動的動畫,即改變當(dāng)前水平坐標(biāo)的值;
鼠標(biāo)離開時:
1.讓背景層滑動到初始位置,即改變橫坐標(biāo)的值,為初始值;
下載Demo地址:http://xiazai.jb51.net/yuanma/myslidebgmenu(jb51.net).rar
以上就是本文的全部內(nèi)容,希望對大家有所幫助,謝謝對腳本之家的支持!
相關(guān)文章
Jquery實現(xiàn)圖片預(yù)加載與延時加載的方法
這篇文章主要介紹了Jquery實現(xiàn)圖片預(yù)加載與延時加載的方法,分別介紹了原生javascript與jQuery插件實現(xiàn)圖片的預(yù)加載及延遲加載的方法,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12jQuery實現(xiàn)仿美橙互聯(lián)兩級導(dǎo)航菜單效果完整實例
這篇文章主要介紹了jQuery實現(xiàn)仿美橙互聯(lián)兩級導(dǎo)航菜單效果,以完整實例形式分析了jQuery響應(yīng)鼠標(biāo)事件實現(xiàn)針對頁面元素的遍歷及樣式的動態(tài)操作技巧,需要的朋友可以參考下2015-09-09jquery使用append(content)方法注意事項分享
append(content)函數(shù)的功能向每個匹配的元素內(nèi)部追加內(nèi)容,在使用方法上需要引起大家的注意,詳細(xì)看下面示例2014-01-01jQuery 鼠標(biāo)經(jīng)過(hover)事件的延時處理示例
一般情況下,我們是不對鼠標(biāo)hover事件進(jìn)行延時處理。但是,有時候,為了避免不必要的干擾,常會對鼠標(biāo)hover事件進(jìn)行延時處理2014-04-04easyui Draggable組件實現(xiàn)拖動效果
Draggable是easyui中用于實現(xiàn)拖拽功能的一個插件。利用它,我們可以實現(xiàn)控件的拖拽效果。Draggble覆蓋默認(rèn)值$.fn.draggable.defaults。2015-08-08jquery 獲取select數(shù)組與name數(shù)組長度的實現(xiàn)代碼
下面小編就為大家?guī)硪黄猨query 獲取select數(shù)組與name數(shù)組長度的實現(xiàn)代碼。小編覺得挺不錯的, 現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06JQuery實現(xiàn)列表中復(fù)選框全選反選功能封裝(推薦)
在做列表時經(jīng)常會遇到全選,反選進(jìn)行批量處理問題。通過本文給大家介紹JQuery實現(xiàn)列表中復(fù)選框全選反選功能封裝,對jq復(fù)選框全選反選功能感興趣的朋友一起看看吧2016-11-11jQuery EasyUI實現(xiàn)右鍵菜單變灰不可用效果
用jQuery實現(xiàn)了三種情況下的變灰不可用的效果,當(dāng)鼠標(biāo)放到上面點擊,右鍵菜單就會消失,其實解決的辦法也很簡單,只要在對應(yīng)的單擊事件里重新綁定右鍵菜單即可,需要的朋友可以參考下2015-09-09jQuery 浮動導(dǎo)航菜單適合購物商品類型的網(wǎng)站
頁面長度較大,需要方便快速的在頁面的不同位置進(jìn)行定位,所以浮動菜單逐漸流行了起來,下面是jQuery浮動導(dǎo)航菜單適合購物網(wǎng)站商品類型2014-09-09