如何使用CSS3和JQuery easing 插件制作絢麗菜單
前言
在本教程中,我們將創(chuàng)建一個(gè)獨(dú)特的滑動(dòng)框?qū)Ш?。這樣做可以讓有菜單的盒子滑出,并且彈出縮略圖。在某些菜單項(xiàng)中我們還包含著有進(jìn)一步鏈接的子菜單。取決于我們鼠標(biāo)在菜單項(xiàng)上的停懸,子菜單將向左或向右滑動(dòng)。
我們將使用jQuery Easing Plugin插件和一些由tibchris.提供的漂亮圖片
標(biāo)記
在HTML的結(jié)構(gòu)中,我們將使用一個(gè)無(wú)序的列表,其中每個(gè)菜單項(xiàng)將包含的主要鏈接和一個(gè)子菜單的div元素:
<ul id="sdt_menu" class="sdt_menu"> <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > <img src="images/1.jpg" alt="" /> <span class="sdt_active"></span><span class="sdt_wrap"><span class="sdt_link">Portfolio</span> <span class="sdt_descr">My work</span> </span></a> <div class="sdt_box"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Websites</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Illustrations</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Photography</a> </div> </li> </ul>
如果這里沒(méi)有子菜單,DIV將簡(jiǎn)單的被排除在外。圖片開(kāi)始不會(huì)顯示,因?yàn)槲覀兪褂胏ss把它的高度和寬度設(shè)置為0.讓我們看看樣式表:
樣式表
我們開(kāi)始設(shè)計(jì)無(wú)序列表的樣式:
ul.sdt_menu{ margin:0; padding:0; list-style: none; font-family:"Myriad Pro", "Trebuchet MS", sans-serif; font-size:14px; width:1020px; }
通常的,我們想為我們菜單中的鏈接清除任何默認(rèn)的文本裝飾和外框:
ul.sdt_menu a{ text-decoration:none; outline:none; }
我們的列表項(xiàng)將靠左浮動(dòng),并且相對(duì)定位。因?yàn)槲覀円獙?duì)里邊的元素做絕對(duì)定位。
如果我們不這樣做的話,絕對(duì)定位的元素對(duì)這個(gè)頁(yè)面來(lái)說(shuō)將是相對(duì)的。
ul.sdt_menu li{ float:left; width:170px; height:85px; position:relative; cursor:pointer; }
對(duì)于標(biāo)題和描述,我們有2個(gè)span,主要鏈接元素的樣式將被定義成如下:
ul.sdt_menu li > a{ position:absolute; top:0px; left:0px; width:170px; height:85px; z-index:12; background:transparent url(../images/overlay.png) no-repeat bottom right; -moz-box-shadow:0px 0px 2px #000 inset; -webkit-box-shadow:0px 0px 2px #000 inset; box-shadow:0px 0px 2px #000 inset; }
注意z-index:我們將定義為所有的重要元素的堆疊順序,使正確的留在上面。
我們正在使用背景圖像創(chuàng)建一個(gè)半透明漸變玻璃般的效果。當(dāng)您使用一些背景圖案(如木材演示),它創(chuàng)建了一個(gè)美麗的效果。確保嘗試不同質(zhì)地的 - 它只是看起來(lái)驚人的!
你也可以操作陰影,改變值成為:2px 2px 6px #000 inset,將會(huì)給你帶來(lái)非常好的影響。
ul.sdt_menu li a img{ border:none; position:absolute; width:0px; height:0px; bottom:0px; left:85px; z-index:100; -moz-box-shadow:0px 0px 4px #000; -webkit-box-shadow:0px 0px 4px #000; box-shadow:0px 0px 4px #000; }
我們給這樣圖片加一個(gè)動(dòng)畫(huà)效果,讓他從底部動(dòng)起來(lái)。那是就是為什么我使用“bottom”作為參考點(diǎn)。我們也添加一些優(yōu)雅的方塊陰影。前邊2個(gè)的值是0,使得圖片周?chē)年幱熬鶆驍U(kuò)散。我把它應(yīng)用到鏈接元素。無(wú)論什么時(shí)候你想創(chuàng)建一個(gè)輕的邊界效應(yīng)。你都可以使用這一招!他的優(yōu)點(diǎn)是,陰影不是真的,你不需要考慮它的寬度或元素的高度計(jì)算。目前的缺點(diǎn)是,IE下是不支持CSS3的。
作為標(biāo)題和描述的span 包裝都會(huì)有這樣的樣式:
ul.sdt_menu li span.sdt_wrap{ position:absolute; top:25px; left:0px; width:170px; height:60px; z-index:15; }
如果你有一些較大的文本,你將需要適應(yīng)這些值。也確保適應(yīng)值在JavaScript的動(dòng)畫(huà)值中。
接下來(lái),我們定義為灰色框,向下滑動(dòng)的風(fēng)格。我們給它一個(gè)0的高度和位置,我們只需以動(dòng)畫(huà)的方式要增加其高度:
ul.sdt_menu li span.sdt_active{ position:absolute; background:#111; top:85px; width:170px; height:0px; left:0px; z-index:14; -moz-box-shadow:0px 0px 4px #000 inset; -webkit-box-shadow:0px 0px 4px #000 inset; box-shadow:0px 0px 4px #000 inset; }
盒子中span和link的常用樣式應(yīng)該被定義成如下:
ul.sdt_menu li span span.sdt_link, ul.sdt_menu li span span.sdt_descr, ul.sdt_menu li div.sdt_box a{ margin-left:15px; text-transform:uppercase; text-shadow:1px 1px 1px #000; }
標(biāo)題和描述被定義成如下樣式:
ul.sdt_menu li span span.sdt_link{ color:#fff; font-size:24px; float:left; clear:both; } ul.sdt_menu li span span.sdt_descr{ color:#0B75AF; float:left; clear:both; width:155px; /*For dumbass IE7*/ font-size:10px; letter-spacing:1px; }
子菜單的盒子初始化的時(shí)候應(yīng)該是在灰色盒子下并隱藏的。稍后我們使他動(dòng)起來(lái),向右或向左,這取決于我們?cè)谀?。例如,如果我們鼠?biāo)在最后一個(gè)元素上徘徊,我們想實(shí)現(xiàn)讓子菜單向左的動(dòng)畫(huà)效果。其他的條件下,我們想讓它向右。
ul.sdt_menu li div.sdt_box{ display:block; position:absolute; width:170px; overflow:hidden; height:170px; top:85px; left:0px; display:none; background:#000; } ul.sdt_menu li div.sdt_box a{ float:left; clear:both; line-height:30px; color:#0B75AF; }
子菜單的第一個(gè)link應(yīng)該有一個(gè)margin:
ul.sdt_menu li div.sdt_box a:first-child{ margin-top:15px; } ul.sdt_menu li div.sdt_box a:hover{ color:#fff; }
Javascript
當(dāng)我們用鼠標(biāo)輸入的列表元素,我們放大圖像,并顯示,sdt_active跨度和sdt_wrap跨度。如果元素有一個(gè)子菜單(sdt_box),然后我們將它推到一邊。如果該元素是最后一個(gè),我們?cè)诓藛蔚淖硬藛慰蚧脽羝淖髠?cè),否則在右側(cè):
$(function() { /** * for each menu element, on mouseenter, * we enlarge the image, and show both sdt_active span and * sdt_wrap span. If the element has a sub menu (sdt_box), * then we slide it - if the element is the last one in the menu * we slide it to the left, otherwise to the right */ $('#sdt_menu > li').bind('mouseenter',function(){ var $elem = $(this); $elem.find('img') .stop(true) .animate({ 'width':'170px', 'height':'170px', 'left':'0px' },400,'easeOutBack') .andSelf() .find('.sdt_wrap') .stop(true) .animate({'top':'140px'},500,'easeOutBack') .andSelf() .find('.sdt_active') .stop(true) .animate({'height':'170px'},300,function(){ var $sub_menu = $elem.find('.sdt_box'); if($sub_menu.length){ var left = '170px'; if($elem.parent().children().length == $elem.index()+1) left = '-170px'; $sub_menu.show().animate({'left':left},200); } }); }).bind('mouseleave',function(){ var $elem = $(this); var $sub_menu = $elem.find('.sdt_box'); if($sub_menu.length) $sub_menu.hide().css('left','0px'); $elem.find('.sdt_active') .stop(true) .animate({'height':'0px'},300) .andSelf().find('img') .stop(true) .animate({ 'width':'0px', 'height':'0px', 'left':'85px'},400) .andSelf() .find('.sdt_wrap') .stop(true) .animate({'top':'25px'},500); }); });
這就完成了。我們希望你喜歡這個(gè)小菜單并且可以合理的使用它。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 如何使用CSS3+JQuery實(shí)現(xiàn)懸浮墻式菜單
- jquery+css3實(shí)現(xiàn)熊貓tv導(dǎo)航代碼分享
- CSS3結(jié)合jQuery實(shí)現(xiàn)動(dòng)畫(huà)效果及回調(diào)函數(shù)的實(shí)例
- 基于jQuery和CSS3實(shí)現(xiàn)APPLE TV海報(bào)視差效果
- jQuery+CSS3實(shí)現(xiàn)點(diǎn)贊功能
- jquery+css3問(wèn)卷答題卡翻頁(yè)動(dòng)畫(huà)效果示例
- CSS3 media queries結(jié)合jQuery實(shí)現(xiàn)響應(yīng)式導(dǎo)航
相關(guān)文章
jQuery EasyUI ProgressBar進(jìn)度條組件
這篇文章主要為大家詳細(xì)介紹了jQuery EasyUI ProgressBar進(jìn)度條組件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02jQuery實(shí)現(xiàn)頁(yè)面內(nèi)錨點(diǎn)平滑跳轉(zhuǎn)特效的方法總結(jié)
通過(guò)jQuery實(shí)現(xiàn)頁(yè)面內(nèi)錨點(diǎn)平滑跳轉(zhuǎn)的方法很多,可以通過(guò)插件hovertreescroll實(shí)現(xiàn),也可以簡(jiǎn)單的通過(guò)animate方法實(shí)現(xiàn),下面介紹這2種比較簡(jiǎn)單的方法。2015-05-05ajax頁(yè)面無(wú)刷新 IE下遭遇Ajax緩存導(dǎo)致數(shù)據(jù)不更新的問(wèn)題
在做ajax頁(yè)面無(wú)刷新添加的時(shí)候,IE下遭遇Ajax緩存,因?yàn)閯傞_(kāi)始并不知道IE有這個(gè)壞毛病,折騰好久,終于解決問(wèn)題,曬出來(lái)和大家分享,希望可以幫助你們2012-12-12jQuery css() 方法動(dòng)態(tài)修改CSS屬性
在jquery中我們要?jiǎng)討B(tài)的修改css屬性我們只要使用css()方法就可以實(shí)現(xiàn)了,下面我來(lái)給各位同學(xué)詳細(xì)介紹介紹。2016-09-09基于JQuery實(shí)現(xiàn)異步刷新的代碼(轉(zhuǎn)載)
JQuery,是輕量級(jí)的js庫(kù),把繁瑣的js代碼封裝,使調(diào)用更簡(jiǎn)單,完成更多功能。同樣,封裝了js利用XMLHttpRequest實(shí)現(xiàn)的異步刷新.2011-03-03jQuery實(shí)現(xiàn)QQ空間漢字轉(zhuǎn)拼音功能示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)QQ空間漢字轉(zhuǎn)拼音功能,結(jié)合具體實(shí)例形式分析了jQuery實(shí)現(xiàn)拼音與中文漢字的轉(zhuǎn)換操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07jQuery EasyUI API 中文文檔 - ComboTree組合樹(shù)
jQuery EasyUI API 中文文檔 - ComboTree組合樹(shù),需要的朋友可以參考下。2011-10-10